转载请注明原文地址:https://www.cnblogs.com/cnodoo/p/9307319.html 

一:odoo后端上传附件

odoo中的ir.attachment模型是附件模型,可以用一个字段关联到该模型,从而达到保存附件的功能。

例如:

advert_attachment = fields.Many2one('ir.attachment', string=u'广告视频')

之后,在form视图中编辑该字段时,就可以从attachment模型的记录中选取已上传的附件文件,或者新建一条attachment记录来上传附件。

二:其他系统的前端网页、Webapp、移动app下载或访问附件

ir.attachment模型对应的数据库表是:ir_attachment

查看该表的字段,我们发现其中最重要的字段主要以下几个:

id:记录id,唯一。

name:上传附件时,为该记录的命名。

datas_fname:上传附件的本来文件名,含后缀名。

datas:隐藏字段,数据库表中看不到该字段,但是代码中可以通过该字段取到附件在数据库中存储的二进制数据串。
复制代码

知道了附件的存储形式,那么访问的思路就有了:

通过id或者name属性,查询ir_attachment表,得到对应的记录对象;

访问记录对象的datas字段,获取附件的二进制数据

odoo是以base64的格式保存附件的,所以我们也通过base64解码附件的二进制数据

最后,我们通过IO流来传输数据回前端、webapp、移动端

#需要导入以下两个模块
from cStringIO import StringIO
import base64

#在controller中,把数据流以文件形式返回
data = StringIO(base64.standard_b64decode(记录.datas))  //用base64把二进制数据解码,作为参数创建StringIO流。
return http.send_file(data,filename=记录['datas_fname'],as_attachment=True) //用http.send_file把IO流返回客户端

三:非odoo系统的前端网页、webapp、移动app向odoo上传附件文件

使用文件上传插件把文件数据流传输到controller,并把一些必要字段值如name、datas_fname等传过来;

在controller的方法中,调用ir.attachment模型等write方法插入一条新记录即可。

Odoo附件传输的更多相关文章

  1. odoo开发笔记 -- 附件上传

    附件上传基本原理实现,可以参考这篇: https://www.cnblogs.com/ljwTiey/p/7348291.html http://blog.csdn.net/wangnan537/ar ...

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

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

  3. gSOAP MTOM

    前言 需要准备的知识:wsdl,soap,gSOAP,C++,fidder. 首先介绍几个相关的概念 1.MTOM基础概念      MTOM(Message Transmission Optimiz ...

  4. JAVA6开发WebService (二)——JAX-WS例子

    转载自http://wuhongyu.iteye.com/blog/807836 上一篇写了个最简单的小例子,只是为了说明JAVA6开发Web Service很方便,这一篇稍微深入一点,写个稍微有点代 ...

  5. 你真的了解JAVA中与Webservice相关的规范和实现吗?

    非常多人在项目中使用Webservice,仅仅是知道怎样公布Webservice,怎样调用Webservice,但真要论其来龙去脉,还真不一定清楚. 一切一切还要从我们伟大的sun公司规范说起. JA ...

  6. 如何选择适合自己的CMS建站系统

             在互联网发展突飞猛进的今天,可谓”得市场者得天下”,而电商已成为占据市场速度最快.范围最广的手段,进而网站建设也逐渐引起商家重视,并深入到了企业和个体的发展战略之中. 如今企业建站已 ...

  7. 调用webService的几种方式

    转自:http://blog.csdn.net/u011165335/article/details/51345224 一.概览 方式1: HttpClient:可以用来调用webservie服务,也 ...

  8. WebService案例入门(基础篇)

    [版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/52106690 作者:朱培 ID:sdksdk0 邮 ...

  9. webService的介绍与简单使用

    webService开发项目介绍: 1 Webservice:跨语言跨平台的远程调用技术.Web service 即web服务,它是一种跨编程语言和跨操作系统平台的远程调用技术即跨平台远程调用技术. ...

随机推荐

  1. oracle中数据类型number(m,n)

    oracle中数据类型number(m,n)中m表示的是所有有效数字的位数,n表示的是小数位的位数.m的范围是1-38,即最大38位. 1> .NUMBER类型细讲:Oracle   numbe ...

  2. Cuckoo for Hashing(hash)hunnuoj

    Problem B:Cuckoo for HashingAn integer hash table is a data structure that supports insert, delete a ...

  3. Chromium源码--网络请求流程分析

    转载请注明出处:http://www.cnblogs.com/fangkm/p/3784660.html 本文探讨一下chromium中加载URL的流程,具体来说是从地址栏输入URL地址到通过URLR ...

  4. PHP实现大转盘抽奖算法

    流程: 1.拼装奖项数组,2.计算概率,3.返回中奖情况 代码如下:中奖概率 ' v ' 可以在后台设置,传到此方法中,注意传整数 function get_gift(){ //拼装奖项数组 // 奖 ...

  5. SpringBoot简介、特点

    ##SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包.SpringBoot整合了所有的框架,并通过一行简单的main方法启动应用. ##微框 ...

  6. JS中判断数据类型的几种方法

    1⃣️首先我们来了解一下js中的数据类型 1.基本数据类型:Undefined.Null.Boolean.Number.String(值类型) 2.复杂数据类型:Object(引用类型) (值类型和引 ...

  7. JS--我发现,原来你是这样的JS(引用类型不简单[下篇],基本包装类型与个体内置对象)

    一.介绍 本篇是续上一篇的,引用类型的下篇,本篇主要是说基本包装类型和个体内置对象.如果你能收获一些知识,那我很高兴,很满足,哈哈哈,希望大家能愉快看完.如果你想学好一门技术,要不忘初心,方得始终. ...

  8. Lodash学习笔记

    有多年开发经验的工程师,往往都会有自己的一套工具库,称为utils.helpers等等,这套库一方面是自己的技术积累,另一方面也是对某项技术的扩展,领先于技术规范的制订和实现. Lodash就是这样的 ...

  9. Python+Selenium笔记(一):环境配置+简单的例子

    #环境配置基于windows操作系统 #学习selenium要有一些HTML和xpth的基础,完全不会的建议先花点时间学点基础(不然元素定位,特别是xpth可能看的有点懵) #HTML :  http ...

  10. Python笔记(八):web开发

    #本文是在Windows环境下,Unix系统应该还要设置2个东西 (一)    采用MVC设计web应用 遵循   模型-视图-控制器(model-view-controlle) 模型:存储web应用 ...