我想从ftp服务器下载文件,并存储在二进制字段中,怎么做呢?其实,我想创建模型,并添加二进制字段来存储下载文件和读取这个文件。
class tog_sale(models.Model):
_name = 'tog_sale.tog_sale'
logging.info("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz")
datas=fields.Many2many('ir.attachment')
name=fields.Char(string="name")
@api.model
def schedule_download(self):
attachment_obj = self.env['ir.attachment']
with request.urlopen('ftp://localhost/Downloads/iris.csv') as response:
attachment_obj.create({'name': 'iris.csv', 'datas': response.read()})
你可以用 urllib.request.urlopen 从FTP服务器上获取文件,然后使用读取方法获取 bytes
将被用作二进制字段的值。
下面的例子将下载的文件存储在 datas
二进制领域 ir.attachment
表。
attachment_obj = self.env['ir.attachment']
with request.urlopen('ftp://ftp.dlink.eu/Manuals/DES-1008PA_Manual.pdf') as response:
attachment_obj.create({'name': 'DES-1008PA_Manual.pdf', 'datas': response.read()})
编辑:
该 二进制 字段有一个属性 attachment
来指定该字段是否应存储为 ir_attachment
或模型表中的一列(default: True
)
正如我所看到的,你添加了一个many2many字段来链接记录到 tog_sale
.
例子:
你可以添加一行来创建一个附件,并填入 datas
领域:
with request.urlopen('ftp://ftp.dlink.eu/Manuals/DES-1008PA_Manual.pdf') as response:
self.write({'datas': [(0, 0, {'name': 'DES-1008PA_Manual.pdf', 'datas': response.read()})]})