@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. 一个生成随机颜色的js函数

    function getRandomColor(){ let rgb = []; for(let i=0;i<3;++i){ let color = Math.floor(Math.random ...

  2. mySql跳过行数获取多少行

    LIMIT :需要获取多少条记录 OFFSET :跳过前面的多少行记录从后面开始获取 SELECT * FROM USER LIMIT 32 OFFSET 1 只获取12行记录 跳过第一条记录 SEL ...

  3. C# 域套接字通讯类

    public class UdsClient { public Socket _socket { get; set; } public UnixDomainSocketEndPoint endPoin ...

  4. HarmonyOS Next 鸿蒙开发-如何使用服务端下发的RSA公钥(字符串)对明文数据进行加密

    如何使用服务端下发的RSA公钥(字符串)对明文数据进行加密 将服务器下发的RSA公钥字符串替换掉pubKeyStr即可实现,具体可参考如下代码: import { buffer, util } fro ...

  5. 插入排序(LOW)

    博客地址:https://www.cnblogs.com/zylyehuo/ # _*_coding:utf-8_*_ def insert_sort(li): for i in range(1, l ...

  6. HashMap-线程不安全的原因

    前言 HashMap线程安全的问题,在各大面试中都会被问到,属于常考热点题目.虽然大部分读者都了解它不是线程安全的,但是再深入一些,问它为什么不是线程安全的,仔细说说原理,用图画出一种非线程安全的情况 ...

  7. 通俗易懂分布式事务之2PC、3PC、Seata AT模式、Seata TCC模式

    通俗易懂分布式事务之2PC.3PC.AT.TCC 单机服务事务提交回滚操作是需要拿到Connection对象,调用提交commit方法或者rollback方法回滚的,例如下面操作 Connection ...

  8. 【Ubuntu】在Ubuntu上安装IDEA

    [Ubuntu]在Ubuntu上安装IDEA 零.前言 最近换了Ubuntu系统,但是还得是要写代码,这样就不可避免地用到IDEA,接下来介绍一下如何在Ubuntu上安装IDEA. 壹.下载 这一步应 ...

  9. Let’s Encrypt & Certbot 浅谈

    前言 当我们想给网站启用HTTPS, 通常需要从证书颁发机构购买证书, 并配置到现有的HTTP服务上来实现HTTPS. 这里暗藏的痛点是: 我们需要花钱(买证书) 证书颁发机构(质量参差不齐, 不一定 ...

  10. 🎀maven 版本管理

    简介 Maven的versions插件提供了一系列用于处理项目版本的命令 相关命令 mvn versions:set 版本设置 mvn versions:set -DnewVersion=1.0.0- ...