解决上传图片文件名为中文错误的问题

今天写日志,上传图片时提示500错误,于是查看服务器日志,发现了这两行

[Sun May 22 15:10:28 2011] [error] [client 202.xxx.xxx.xxx]     imgfile = open(dirday+filename,'wb'), referer: http://lerry.org/admin/post

[Sun May 22 15:10:28 2011] [error] [client 202.xxx.xxx.xxx] IOError: [Errno 22] invalid mode ('wb') or filename: 'D:\\\\wwwroot\\\\myblog\\\\static/upload/201105/22/\\xe5\\xb9\\xbb\\xe7\\x81\\xaf\\xe7\\x89\\x871.png', referer: http://lerry.org/admin/post

看完后第一感觉是中文文件名的原因,找到存储图片的相关代码,发现确实没有对中文文件名进行处理,于是对filename这一形参传入前进行处理,imgname = filepath.split('/')[-1].decode('UTF-8'),加上了.decode('UTF-8'),这样修改之后,在此上传就成功了。

2011-05-22 15:35121