【问题标题】:Django 1.7: serve a pdf -file (UnicodeDecodeError)Django 1.7:提供 pdf 文件 (UnicodeDecodeError)
【发布时间】:2015-03-27 05:43:50
【问题描述】:

我正在尝试使用 django 1.7 提供 PDF 文件,这基本上是“应该”工作的代码......如果我将 content_type 更改为“文本”并下载一个 .tex 文件,它肯定会工作。 ,但是当我尝试使用二进制文件时,我在 /path/to/file/filename.pdf 处得到“UnicodeDecodeError” 'utf-8' 编解码器无法解码位置 10 中的字节 0xd0:无效的继续字节”

def download(request, file_name):
    file = open('path/to/file/{}'.format(file_name), 'r')
    response = HttpResponse(file, content_type='application/pdf')
    response['Content-Disposition'] = "attachment; filename={}".format(file_name)
    return response

所以基本上,如果我理解正确,它会尝试将文件作为 UTF-8 编码的文本文件,而不是二进制文件。我尝试将 content_type 更改为 'application/octet-stream',结果相似。我错过了什么?

【问题讨论】:

  • 你还没有读过文件;您现在将文件指针传递给HttpResponse,而不是 PDF 数据。

标签: python binaryfiles python-3.4 django-1.7


【解决方案1】:

尝试使用二进制模式打开文件:

file = open('path/to/file/{}'.format(file_name), 'rb')

【讨论】:

  • 这项工作适用于基于云的图像存储过程吗?
猜你喜欢
  • 2014-12-22
  • 2015-08-06
  • 2015-02-28
  • 2022-07-21
  • 2016-10-22
  • 2017-09-22
  • 1970-01-01
  • 2013-03-25
  • 2014-07-25
相关资源
最近更新 更多