文档管理中,如果上传的文件名含有中文字符,下载时会提示出错,如没有权限等。这个问题困惑我比较久的时间,通过跟踪openerp_server.log,可以看到类似提示:

2012-09-28 21:51:39,069 2332 INFO ? werkzeug: 127.0.0.1 - - [28/Sep/2012 21:51:39] "POST /web/binary/saveas_ajax HTTP/1.1" 500 -
2012-09-28 21:51:39,115 2332 ERROR ? werkzeug: Error on request:
Traceback (most recent call last):
File "werkzeug\serving.py", line 159, in run_wsgi
File "werkzeug\serving.py", line 146, in execute
File "C:\Program Files (x86)\OpenERP 6.1-1\server\openerp\wsgi\core.py", line 397, in application
result = handler(environ, start_response)
File "C:\Program Files (x86)\OpenERP 6.1-1\server\openerp\addons\web\common\http.py", line 467, in __call__
return self.dispatch(environ, start_response)
File "werkzeug\wsgi.py", line 411, in __call__
File "C:\Program Files (x86)\OpenERP 6.1-1\server\openerp\addons\web\common\http.py", line 505, in dispatch
return response(environ, start_response)
File "werkzeug\wrappers.py", line 1082, in __call__
File "werkzeug\wrappers.py", line 1072, in get_wsgi_response
File "werkzeug\datastructures.py", line 1141, in to_list
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 28-29: ordinal not in range(256)

可见问题还是出在字符解析上。(附件文档相关的数据表是ir_attchement,数据表里面的中文没有问题)

后来逛论坛,发现http://shine-it.net/index.php/topic,2919.msg9861.html#msg9861的帖子tommo提到解决办法,

addons/web/controllers/main.py
Binary类的saveas和saveas_ajax方法中:
在 return req.make_response(....)前面插入

if isinstance(filename, unicode): filename=filename.encode('utf8')

重启openerp服务。

试了可以下载,但是文件名的中文部分乱码,因为考虑到文件名除了中英文外,没有其它语言,遂改为:

if isinstance(filename, unicode): filename=filename.encode('gb2312')

Openerp上传中文名附件,下载时报错的处理方法的更多相关文章

  1. iOS 上传新版本到AppStore时报错ITMS-90034

    今天打包新版本上传到AppStore时报错 ERROR ITMS-90034:"Missing or invalid signature.The bundle'com.xxx.xxx' at ...

  2. Uedior上传大文件超时报错

    出错原因: 1.php超时等待时间太短 2.uedior中设置了请求超时,提示信息: 上传失败,请重试 先解决第一个问题: 设置php.ini中的max_execution_time 为0 (意思是h ...

  3. 关于confluence上传文件附件预览查看时出现乱码的问题解决办法

    在confluence上传excel文件,预览时发现乱码问题主要是因为再上传文件的时候一般是Windows下的文件上传,而预览的时候,是linux下的环境,由于linux下没有微软字体,所以预览的时候 ...

  4. confluence上传文件附件预览乱码问题(linux服务器安装字体操作)

    在confluence上传excel文件,预览时发现乱码问题主要是因为再上传文件的时候一般是Windows下的文件上传,而预览的时候,是linux下的环境,由于linux下没有微软字体,所以预览的时候 ...

  5. 文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)--SNF快速开发平台3.0

    实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制, ...

  6. Jmeter和LR上传文件和下载

    Jmeter和LR上传文件和下载 背景: 在某个申请业务中,需要上传附件文件,然后才能提交该申请 遇到的问题: 1,  在使用Jmeter或者LR进行录制时,无法录制到上传文件的请求,只能通过Fidd ...

  7. Selenium(十一):设置元素等待、上传文件、下载文件

    1. 设置元素等待 前面我们接触了几个元素等待方法,sleep.implicitly_wait方法,这一章我们就来整体学一下. 现在大多数Web应用程序使用的都是AJAX技术.当浏览器加载页面时,页面 ...

  8. Java ftp 上传文件和下载文件

    今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...

  9. ie8 ajaxSubmit 上传文件提示下载

    转载 解决ie下ajaxsubmit上传文件提示下载文件问题 主要是应为放回类型为json,返回text/html

随机推荐

  1. JSP 页面传参和接受参数

    <%@ page language="java" contentType="text/html; charset=GBK" pageEncoding=&q ...

  2. POJ 2923 Relocation (状态压缩,01背包)

    题意:有n个(n<=10)物品,两辆车,装载量为c1和c2,每次两辆车可以运一些物品,一起走.但每辆车物品的总重量不能超过该车的容量.问最少要几次运完. 思路:由于n较小,可以用状态压缩来求解. ...

  3. jQuery学习记录1

    jquery 和 js css里面都是坑呀 this.style.backgroundColor 和 css {background:#8df;} 是冲突的,用了前者,再$(this).addClas ...

  4. 评论 ”[实例] 设计基于JQM的WebApp“

    点这里 DEMO 先上最近做的一个WebApp小应用,http://iwxy.me/m.html,大家可以先去玩玩儿,在移动终端访问查看最佳效果 实现的功能是微博上偶然看到的一个小测试,动物认识真实的 ...

  5. Android中的Adapter总结

    一.Adapter的介绍 An Adapter object acts as a bridge between an AdapterView and the underlying data for t ...

  6. Shell实现跳板机,为什么用跳板机

    整理自:http://blog.chinaunix.net/uid-22101889-id-3167454.html 注意:请谨慎使用,到现在为止,使用了,我还没找到改回去的方法. 1.     问题 ...

  7. zoj 3513 Human or Pig 博弈论

    思路:P态的所有后继全为H态,第一个格子为P态,第一行和第一列为H态. 代码如下: #include<iostream> #include<cstdio> #include&l ...

  8. android sdk启动报错error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037:

    android sdk启动报错error: could not install *smartsocket* listener: cannot bind to 127.0.0.1:5037: 问题原因: ...

  9. AC自动机总结

    AC自动机的模板 void buildAC() { while(!q.empty()) q.pop(); q.push(); while(!q.empty()) { int x=q.front();q ...

  10. 性能标准:Apdex介绍

    目前的应用程序性能测试工具有多方面的局限.每种工具都有其自己对性能的定义,产生太多混乱或矛盾的数值,并缺少简洁的结论.IT经理们无法深入了解性能,而这是软件与用户对关键应用的体验有关的事. 听云作为新 ...