Django read from filefield返回十六进制,如何从AWS s3 bucket读取文档文件

2024-09-30 10:32:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在建立一个django网站,匹配文档,我将文档上传到Minio bucket,因此defaut存储是来自django存储的storages.backends.s3boto3.s3boto3存储,而不是默认的django存储类。这个问题类似于 Why is Django FieldFIle readline() returning the hex version of a text file?

class PostCreateView(LoginRequiredMixin, CreateView):
    model = Post
    fields = ['title', 'doc_file']

    def form_valid(self, form):
        form.instance.author = self.request.user
        f = form.instance.doc_file.open('r')
        text = ''.join(i.decode("utf-8", 'ignore') for i in f.readlines())
        form.instance.content = ''.join(
            [i if ord(i) < 128 else ' ' for i in text])
        return super().form_valid(form)

所以我读了文档,然后把它传递到我的内容字段,这是一个文本字段。所以当我读一个文档时,它都是十六进制的,所以我必须对它进行解码,但即使在那之后,仍然会留下一些奇怪的字符。如果我上传一个.txt文件,它会正确地读取它,但是如果我上传一个doc文件,它会给我很多奇怪的字符,即使在我上传之后也是如此

!# ddddSxSx l SSSSSSSSssss OJQJCJ &p@P ! i4@4NormalCJOJPJQJmH <A@<Default Paragraph Font

GTimes新罗马5SYMBOL3里亚尔;Helvetica 0hKl&;吉隆坡;0" 哦+'0 .+,0

$1TableWordDocumentSummaryInformation(DocumentSummaryInformation8)的根条目

PLZ帮助

编辑: 我知道了如何使用DOCX文件,而pythondocx库仍在尝试了解DOCX

同一问题

How to read AWS S3 stored word document (.doc and .docx) file content using AWS Lambda Python?

我在这里尝试了3票的解决方案,并使用字节io的文件,它没有工作得到坏的zip文件错误 Reading a docx file from s3 bucket with flask results in an AttributeError


Tags: 文件djangoinstancetextin文档selfform

热门问题