我正在尝试在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时要压缩文件头的原因?
PS。我确认文件路径已存在,并且该文件不是zip文件,而是excel文件。
答案 0 :(得分:0)
文件内容表示它是.xlsx文件,而不是.xls(PK是ZIP存档的签名,而.xlsx文件是XML文件的zip,如此处https://en.wikipedia.org/wiki/Microsoft_Excel#File_formats所述) 。所以Content-Type应该是
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
答案 1 :(得分:0)
发生此问题是因为Windows和Linux上的Python之间的行为不同。在Windows上,打开文件模式应该是rb
,而不仅仅是r
。