Openerp上传中文名附件,下载时报错的处理方法
文档管理中,如果上传的文件名含有中文字符,下载时会提示出错,如没有权限等。这个问题困惑我比较久的时间,通过跟踪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上传中文名附件,下载时报错的处理方法的更多相关文章
- iOS 上传新版本到AppStore时报错ITMS-90034
今天打包新版本上传到AppStore时报错 ERROR ITMS-90034:"Missing or invalid signature.The bundle'com.xxx.xxx' at ...
- Uedior上传大文件超时报错
出错原因: 1.php超时等待时间太短 2.uedior中设置了请求超时,提示信息: 上传失败,请重试 先解决第一个问题: 设置php.ini中的max_execution_time 为0 (意思是h ...
- 关于confluence上传文件附件预览查看时出现乱码的问题解决办法
在confluence上传excel文件,预览时发现乱码问题主要是因为再上传文件的时候一般是Windows下的文件上传,而预览的时候,是linux下的环境,由于linux下没有微软字体,所以预览的时候 ...
- confluence上传文件附件预览乱码问题(linux服务器安装字体操作)
在confluence上传excel文件,预览时发现乱码问题主要是因为再上传文件的时候一般是Windows下的文件上传,而预览的时候,是linux下的环境,由于linux下没有微软字体,所以预览的时候 ...
- 文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)--SNF快速开发平台3.0
实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制, ...
- Jmeter和LR上传文件和下载
Jmeter和LR上传文件和下载 背景: 在某个申请业务中,需要上传附件文件,然后才能提交该申请 遇到的问题: 1, 在使用Jmeter或者LR进行录制时,无法录制到上传文件的请求,只能通过Fidd ...
- Selenium(十一):设置元素等待、上传文件、下载文件
1. 设置元素等待 前面我们接触了几个元素等待方法,sleep.implicitly_wait方法,这一章我们就来整体学一下. 现在大多数Web应用程序使用的都是AJAX技术.当浏览器加载页面时,页面 ...
- Java ftp 上传文件和下载文件
今天同事问我一个ftp 上传文件和下载文件功能应该怎么做,当时有点懵逼,毕竟我也是第一次,然后装了个逼,在网上找了一段代码发给同事,叫他调试一下.结果悲剧了,运行不通过.(装逼失败) 我找的文章链接: ...
- ie8 ajaxSubmit 上传文件提示下载
转载 解决ie下ajaxsubmit上传文件提示下载文件问题 主要是应为放回类型为json,返回text/html
随机推荐
- 常见的NoSql系统使用场景分析--转载
•Cassandra •特性:分布式与复制的权衡\根据列和键范围进行查询\BigTable类似的功能:列,列族\写比读快很多 •最佳适用:写操作较多,读比较少的时候.如果你的系统都是基于Java的时候 ...
- POJ 1552
#include<iostream> using namespace std; int main() { ]; int i,j; ; do{ sum=; ;num[i-]!=&&a ...
- 概述Log4j简介
在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j. Log4j是Apache的一个开放源代码项目,通过使用Log4j ...
- 传说中的WCF(12):服务器回调有啥用
你说,服务器端回调有啥用呢?这样问,估计不好回答,是吧.不急,先讨论一个情景. 假设现有服务器端S,客户端A开始连接S并调用相关操作,其中有一个操作,在功能上有些特殊,调用后无法即时回复,因为在服务器 ...
- hdu 2964 Prime Bases(简单数学题)
按照题意的要求逐渐求解: #include<stdio.h> #include<string.h> #include<algorithm> using namesp ...
- 【转】java线程系列---Runnable和Thread的区别
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的run() ...
- JavaPersistenceWithHibernate第二版笔记Getting started with ORM-001用JPA和Hibernate实现HellowWorld(JTA、Bitronix)
一.结构 二.model层 1. package org.jpwh.model.helloworld; import javax.persistence.Entity; import javax.pe ...
- QApplication::alert 如果窗口不是活动窗口,则会向窗口显示一个警告(非常好用,效果就和TeamViewer一样)
void QApplication::alert(QWidget * widget, int msec = 0)如果窗口不是活动窗口,则会向窗口显示一个警告.警报会显示msec 毫秒.如果毫秒为零,闪 ...
- QT+VS编译器处理字符串时的坑真是多
以下因素都有影响:1. QT4与QT5对字符串编码的处理不同(最好不要在源代码里直接写中文,坑更多)2. QTextCodec自动对编码转换的影响3. 源代码文件对编码存储格式的不同会影响编译器对字符 ...
- python多线程threading
本文通过 4个example 介绍python中多线程package —— threading的常用用法, 包括调用多线程, 同步队列类Queue, Ctrl+c结束多线程. example1. 调用 ...