Odoo使响应文件下载损坏

时间:2018-08-15 10:01:51

标签: python odoo odoo-8

我正在尝试在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文件。

2 个答案:

答案 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

(请参阅What is correct content-type for excel files?

答案 1 :(得分:0)

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