1
我正在使用分號分隔文件中的導出發票。我創建了一個嚮導來選擇要導出的發票,並且我可以將數據寫入位於my_module/data/invoices.txt中的文件中。現在我想下載這個文件,我在web插件中使用了saveas方法,但是最終出現了404錯誤(我在嚮導中有一個二進制字段(txt_file
)將文件內容存儲爲base64編碼數據)。 這裏是我使用的代碼:Odoo:將二進制文本內容作爲文本文件下載
@api.multi
def export(self):
self.ensure_one()
if self.invoice_ids:
lines = []
for line in self.invoice_ids:
str_line = ''
str_line += str(line.partner_id.name) + ';'
str_line += str(line.number) + ';'
str_line += str(line.origin) + ';'
str_line += str(line.date_invoice) + ';'
str_line += str(line.date_due) + ';'
str_line += line.account_id.name + ';'
str_line += line.journal_id.name + ';'
str_line += str(line.amount_untaxed) + ';'
str_line += str(line.amount_total) + ';'
str_line = str_line.encode('utf-8')
lines.append(str_line)
import os.path
my_path = os.path.abspath(os.path.dirname(__file__))
path = os.path.join(my_path, "../data/invoices.txt")
file = open(path, 'w+')
if file:
output = ''
for line in lines:
output += line + '\n'
self.txt_file = base64.b64encode(output)
file.write(base64.b64decode(self.txt_file))
wizard = self.env['export_invoice.wizard'].with_context({'active_id': self.id}).create({})
# I have found this on the web
return {
'type': 'ir.actions.act_url',
'url': '/web/binary/saveas?model=export_invoice.wizard&field=txt_file&id=%s&filename_field=invoices.txt' % (
wizard.id),
'target': 'self',
}
謝謝@dgeorgiev,我設法下載文件,但我有另一個問題。 '\ n'沒有解釋,有沒有辦法解決這個問題? – guidev224
你的意思是說你使用的文本編輯器不能正確顯示新行嗎?編輯是否有可能期望Windows風格的eols? – dgeorgiev
是@dgeorgiev,這正是發生的事情。也許我不知道,如你所說,編輯期望Windows風格的EOL。 – guidev224