我正在使用python ZipFile库创建一个ZIP文件。它包含4个.txt文件,每个文件的内容只是一个包含报告数据的字符串。它还包含4个.pdf文件,这些文件是从转换为带wkhtmtopdf
的pdf的HTML模板创建的。然后将ZIP以二进制形式存储在PostgreSQL数据库中。然后将其提供给用户以供下载。我遇到的问题是,当启动下载时,大多数浏览器都会将文件视为有害(病毒)。
zip_stream = io.BytesIO()
with ZipFile(zip_stream, 'w') as myzip:
myzip.writestr('file1.txt', report_data['file1_txt'])
myzip.writestr('file2.txt', report_data['file2_txt'])
myzip.writestr('file3.txt', report_data['file3_txt'])
myzip.writestr('file4.txt', report_data['file4_txt'])
myzip.writestr('file1.pdf', wkhtmltopdf.render_qweb_pdf(report_data['file1_html'])
myzip.writestr('file2.pdf', wkhtmltopodf.render_qweb_pdf(report_data['file2_html'])
myzip.writestr('file3.pdf', wkhtmltodpf.render_qweb_pdf(report_data['file3_html'])
myzip.writestr('file4.pdf',wkhtmltopdf.render_qweb_pdf(report_data['file4_html'])
values = {
'name': 'report.zip',
'type': 'binary',
'mimetype': 'application/zip',
'public': False,
'db_datas': base64.b64encode(zip_stream.getvalue())
}
# Writing to database using custom ORM.
attachment_id = self.env['ir.attachment'].create(values)
# Creating download URL:
download_url = '/web/content/' + str(attachment_id.id) + '?download=True'
base_url = self.env['ir.config_parameter'].get_param('web.base.url')