@http.route('/fmcg/download/pdf', type='http', auth="public", csrf=False, cors='*')
def upload_download_pdf(self, **kw):
"""下载pdf接口:直接返回的是一个文件对象,可直接下载

"""
report = request.env.ref('zimo_fmcg_app.action_inventory_report').with_user(SUPERUSER_ID)._render_qweb_pdf(int(kw('id')))
# pdf_doc = request.env['ir.attachment'].sudo().search([('id', '=', 726)], limit=1)
# data = io.BytesIO(base64.standard_b64decode(pdf_doc.datas))
data = io.BytesIO(report[0])
return http.send_file(data, filename='melon_inv.pdf', as_attachment=True)

@http.route('/fmcg/download/pdf2', type='json', methods=['POST'], auth="public", csrf=False, cors='*')
def upload_download_pdf2(self, **kw):
"""下载pdf接口 todo 先用固定的pdf文件测试
model值:
zimo.store.inventory
zimo.store.transaction
传参
{"id":"",
"model":"zimo.store.inventory"
}
"""
# data = request.jsonrequest
# report = request.env.ref('zimo_fmcg_app.action_inventory_report').with_user(SUPERUSER_ID)._render_qweb_pdf(1)
# filename = 'test' + '.pdf'
# attachment = request.env['ir.attachment'].sudo().create({
# 'name': filename,
# 'type': 'binary',
# 'datas': base64.b64encode(report[0]),
# 'res_model': 'zimo.store.inventory',
# 'res_id': 1,
# 'mimetype': 'application/x-pdf'
# })
pdf_attachment = request.env['ir.attachment'].sudo().search([('id', '=', 3292)], limit=1)
return json.dumps(
{"data": [{"pdf_file": "https://www.hxmelon.com/ad/content/%s-%s" % (pdf_attachment.id, pdf_attachment.checksum)}],
"result": "success"})

二、图片传送接口

有两种方式:

1、一种是传对象

base64_data = base64.b64encode(kw['file'].read())

2、一种是传文件内容

file = request.httprequest.data
 @http.route('/fmcg/active/image', type='http', methods=['POST'], auth="public", csrf=False, cors='*')
def upload_active_imaget(self, **kw):
"""上传图片接口

"""
file = request.httprequest.data
_logger.info("-----------/fmcg/active/image--------------------------:%s", kw['file'])
if not kw['file']:
return json.dumps({'result': 'success', 'message': 'no image'})
# base64_data = base64.b64encode(kw['image_file'].read())
# base64_data = False
base64_data = base64.b64encode(kw['file'].read())
active_obj = request.env['zimo.store.activities'].sudo()
s_id = active_obj.search([('name', '=', kw['sid'])], limit=1)
if not s_id:
return json.dumps({'result': 'fail', 'message': 'not find record'})
attachment = request.env['ir.attachment'].sudo().create({
'name': kw['file'].filename,
'datas': base64_data,
'res_id': s_id.id,
'res_model': 'zimo.store.activities',
})
s_id.write({'attach_ids': [(6, 0, [attachment.id])]})
return json.dumps({'result': 'success', 'message': 'success'})

odoo14里面附件传输接口的更多相关文章

  1. SSD的传输总线、传输协议、传输接口

    前言:关于SSD,有众多总线类型.协议类型.接口类型,每个接口还包括不同型号,在这里花点时间全部整理一下,整理日期2017-08-08. 1.传输总线 总线就像一条公路,公路上的车好比总线上的电信号: ...

  2. Tcp 数据对象传输接口对象设计

    输入是一个对象inputObj,接口对象.Send(inputObj),对端接收之后解包成outputObj(与inputObj应相同),触发onPackageReceive事件 事件 public ...

  3. 第2-3-4章 上传附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 5.3 接口开发-上传附件 5.3.1 接口文档 5.3.2 代码实现 5.3.3 接口测试 5.3 接口开发-上传附件 第2-1-2章 传统方式安装FastDFS-附FastDFS常用命令 第 ...

  4. Odoo附件传输

    转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9307319.html  一:odoo后端上传附件 odoo中的ir.attachment模型是附件模型,可以用 ...

  5. java文件传输接口

    开发的时候碰到这样的需求:需要在一个系统(客户端发送请求)中将文件传输至另外一个系统(服务端接收)中去的实现方式,可以批量传输文件,代码如下: 客户端请求: public String upLoadF ...

  6. 第2-3-5章 删除附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 5.4 接口开发-根据id删除附件 5.4.1 接口文档 5.4.2 代码实现 5.4.3 接口测试 5.4.4 测试ALI和FAST_DFS以及MINIO上传和删除的接口 5.4.4.1 阿里 ...

  7. 第2-3-6章 打包批量下载附件的接口开发-文件存储服务系统-nginx/fastDFS/minio/阿里云oss/七牛云oss

    目录 5.6 接口开发-根据文件id打包下载附件 5.6.1 接口文档 5.6.2 代码实现 5.6.3 接口测试 5.7 接口开发-根据业务类型/业务id打包下载 5.7.1 接口文档 5.7.2 ...

  8. Java NIO Channel to Channel Transfers通道传输接口

    原文链接:http://tutorials.jenkov.com/java-nio/channel-to-channel-transfers.html 在Java NIO中如果一个channel是Fi ...

  9. Web Service 附件技术的发展及演变

    Web Service 通常将业务数据封装在 SOAP 主体或者 SOAP 消息附件中进行传输,这些附件往往采用 Base64 编码二进制方式进行封装,这将大大增加待传输的数据量,消耗比较长的编码时间 ...

  10. 【高速接口-RapidIO】4、Xilinx RapidIO核详解

    一.RapidIO核概述 RapidIO核的设计标准来源于RapidIO Interconnect Specification rev2.2,它支持1x,2x和4x三种模式,每通道的速度支持1.25G ...

随机推荐

  1. Python装饰器:套层壳我变得更强了!

    Python装饰器:套层壳我变得更强了 Python装饰器:套层壳我变得更强了 关于作用域和闭包可以聊点什么? 什么是作用域 什么是闭包 装饰器:套层壳我变得更强了 参考资料 昨天阅读了<Pyt ...

  2. 【Python脚本】路径管理之pathlib

    在Python的pathlib模块中,Path类和PurePath类是用于处理文件和目录路径的两个主要类.它们具有不同的目的和功能,以下是它们的主要异同点: 类的继承关系: Path类继承自PureP ...

  3. 【ABAQUS 二次开发笔记】使用keyword 、python和matlab一起处理Odb数据

    用conversion shell element (S4R单元)建模层合板,有6层ply,每个lamina(ply)有3个 integration point,共计18个integration po ...

  4. python 代码编写问题

    1.解决控制台不输出问题 2.写代码写一些伪代码,即实现过程.步骤 3.再填充代码到伪代码 4.规则 正常变量 不太推荐使用下划线

  5. 通过 C# 打印Word文档

    Word文档是日常办公和学习中不可或缺的一部分.比如在商务往来中,经常需要打印 Word 文档用于撰写和传递正式的商务信函.合作协议.项目提案等.打印出来的文档便于双方签字盖章,具有法律效力和正式性. ...

  6. 测试驱动开发(TDD)浅析

    .wj_nav { display: inline-block; width: 100%; margin-bottom: 0.375rem } .wj_nav span { display: inli ...

  7. BUUCTF---RSA1

    RSA基础概念 rsa原理: RSA公开密钥密码体制的原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥 RSA算法的具体描述如下: (1) ...

  8. 【SpringMVC】处理 JSON:使用 HttpMessageConverter

    处理 JSON:使用 HttpMessageConverter 处理 JSON 加入 jar 包: 编写目标方法,使其返回 JSON 对应的对象或集合 在方法上添加 @ResponseBody 注解 ...

  9. 【Unity】改变游戏运行时Window的窗口标题

    [Unity]改变游戏运行时Window的窗口标题 零.需求 Unity打包好的Windows程序,启动后如何更改窗口标题?因为看着英文的感觉不太好,故有此想法.什么?你说为啥不改项目产品名?产品名会 ...

  10. sql server2005的死锁

    select request_session_id spid, OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tra ...