Odoo使响应文件下载损坏



我正在尝试在Odoo 8中下载响应文件。下面的代码适用于 Linux。但是在Windows操作系统中,文件下载已损坏。

filecontent = None
with open("C:\report_media\output\" + output, "r") as f:
if f.mode == 'r':
_logger.debug('File object %s', f)
filecontent = f.read()
if not filecontent:
return http.request.not_found()
else:
return http.request.make_response(filecontent,
[("Content-Type", "application/vnd.ms-excel"),
("Content-Disposition", content_disposition(output))])

文件下载内容如下所示

PK    g‘M#ÏÀ        _rels/.rels­’O‹Â@Å¿J™û

Odoo本身不会报告任何错误。为什么会这样?有解决这个问题的方法吗?还有为什么当文件是 excel 时使用 zip 文件头?

附言。我确认文件路径存在,并且该文件不是zip文件,它是一个excel文件。

文件内容表明它是一个.xlsx文件,而不是.xls(PK 是 ZIP 存档的签名,.xlsx文件是 XML 文件的 zip,如此处所述 https://en.wikipedia.org/wiki/Microsoft_Excel#File_formats(。所以内容类型应该是application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

(请参阅 Excel 文件的正确内容类型是什么?

发生此问题是因为 Python 在 Windows 和 Linux 上的行为不同。在Windows上,打开文件模式应该rb而不仅仅是r

最新更新