Я создаю веб-сайт django, который соответствует документам, и загружаю документы в ведро Minio, поэтому хранилище по умолчанию - это storages.backends.s3boto3.S3Boto3Storage из хранилищ django, а не класс хранилища Django по умолчанию. Этот вопрос похож на Почему возвращает ли Django FieldFIle readline () шестнадцатеричную версию текстового файла?
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, он читает его правильно, но если я загружаю файл документа, он дает мне много странных символов даже после того, как я сделаю ## ''. Join ([i if ord (i) ‹128 else '' for i в тексте]) ## Например, если файл документа содержит только SSSSSSSSssss, я получаю
! # ddddSxSx l SSSSSSSSssss OJQJCJ & p @ P! i4 @ 4NormalCJOJPJQJmH ‹A @‹ Шрифт абзаца по умолчанию
GTimes New Roman5Symbol3Arial; Helvetica 0hKl & Kl & 0 Oh + '0. +, 0
Корневая запись F $ 1 TableWordDocumentSummaryInformation (DocumentSummaryInformation8
PLZ помощь
РЕДАКТИРОВАТЬ: я понял, как работать с файлами DOCX с библиотекой python-docx, все еще пытающейся выяснить документ, хотя
Та же проблема, что и
Я попробовал решение здесь с 3 голосами и использовал байты io для DOC, и это не сработало, возникла ошибка плохого zip файла Чтение файла docx из ведра s3 с помощью flask приводит к ошибке AttributeError