Форум сайта python.su
Есть вью:
def serve_file(request):
f = file(settings.MEDIA_ROOT + 'task/test.docx')
data = FileWrapper(f)
response = HttpResponse(data, mimetype="application/msword; charset=windows-1251")
response['Content-Disposition'] = 'attachment; filename=uuu.docx'
return response
Офлайн
Попробуй так:
f = file(settings.MEDIA_ROOT + 'task/test.docx', 'r+')
response = HttpResponse(data, content_type="application/msword")
Отредактировано (Март 23, 2011 09:59:53)
Офлайн
Doberman26rusУвы, не помогло - всё равно приходит та же ошибка.
Попробуй так:f = file(settings.MEDIA_ROOT + 'task/test.docx', 'r+')response = HttpResponse(data, content_type="application/msword")
Офлайн
упс. Простите не заметил =)
не
f = file(settings.MEDIA_ROOT + 'task/test.docx', 'r+')
f = open(settings.MEDIA_ROOT + 'task/test.docx', 'r+')
Офлайн
Doberman26rusВылезла та же ошибка. Погуглив выяснил, что, похоже, для DOCX-файлов существует новый мим-тип “application/vnd.openxmlformats-officedocument.wordprocessingml.document”, который вроде как надо регистрировать на серваках, но это другая тема.
упс. Простите не заметил =)
неаf = file(settings.MEDIA_ROOT + 'task/test.docx', 'r+')f = open(settings.MEDIA_ROOT + 'task/test.docx', 'r+')
def serve_file(request):
f = open(settings.MEDIA_ROOT + 'task/test.doc', 'r+')
data = FileWrapper(f)
response = HttpResponse(data, content_type="application/msword")
response['Content-Disposition'] = 'attachment; filename=uuu.doc'
return response
Офлайн
Может быть файл всё-таки в бинарном режиме открыть?
Офлайн
Гениально!
Добавление ‘b’ к режиму открытия решило все вышеописанные проблемы.
Спасибо всем, особенно Александру.
ЗЫ: однако для .docx лучше использовать mime-type “application/vnd.openxmlformats-officedocument.wordprocessingml.document”, иначе к имени файла будет присовокуплён хвост с расширением .DOC.
Офлайн