Java Servlet文件上传解决方案(主要针对中文)
2006-09-27 14:06
267 查看
以前做动力中心那个网站的时候,由于用户要求要上传图片以及一些文件,所以要一个上传Servlet的组件。最后选中了SmartUpload,至少在Baidu上搜,到处都是。
没想到这才是噩梦的开始。主要问题是在中文文件名上。后来找了很多资料,用了一个迫不得已的最后方法:重新编译SmartUpload,加上中文的解决方法。后来也不知道怎么也就OK了。
前几个月动力中心的硬盘挂了,数据全丢了。不巧,我这里也没有备份,工作室的备份也丢了。没有办法,只好从一个旧的版本改起。其实中文开发的问题还是很多的,即使在Windows下好好的,到Linux下也会出各种各样的问题(比如Locale是en_US.UTF8)等等。
再也恢复不起来原来的办法了。后来也是在网上找到的资料,说是可以用Commons里的FileUpload. Jakarta Commons名气挺大的,我一起想学学,却一直忘,也不知道该怎么用(以前只听过BeanUtils, 用来注入一个bean的)。
马上从Apache下了一个来试试。注意,要用起来FileUpload,还要下一个Commons IO。里面对国际化的支持还是不错的,至少我用item.getName()出来的居然就有中文。
但保存文件还是遇到了问题。为了对国际化的良好支持,要达到以下几点:在页面显示的文件名要是中文的,下载的时候保存的文件名也要是中文的,同时文件要保存在一个目录下。
在做链接生成的时候,我发现浏览器会把链接中的中文自动encode成UTF-8的URL表示(就是%20%30那种)。没错,文件保存也可以用这个名字,这样在不支持中文路径的linux上也可以保存中文文件名了。然后我自己写了一个下载的Servlet,用于从本地读取文件内容,并写入response.getWriter()里。这样的话文件名自动就成中文了。至于重名问题,我的链接是这么写的: http://www.test.com/download/1892649237492/%8D%82.txt 结果文件名会自动转成中文的(IE6, FF1.5通过)。但是实际的文件名是1892649237492%8D%82.txt,就是没有了"/",这一点,在Download Servlet里解析。同时DownloadServlet里加了一些逻辑,保护系统的安全。
没想到这才是噩梦的开始。主要问题是在中文文件名上。后来找了很多资料,用了一个迫不得已的最后方法:重新编译SmartUpload,加上中文的解决方法。后来也不知道怎么也就OK了。
前几个月动力中心的硬盘挂了,数据全丢了。不巧,我这里也没有备份,工作室的备份也丢了。没有办法,只好从一个旧的版本改起。其实中文开发的问题还是很多的,即使在Windows下好好的,到Linux下也会出各种各样的问题(比如Locale是en_US.UTF8)等等。
再也恢复不起来原来的办法了。后来也是在网上找到的资料,说是可以用Commons里的FileUpload. Jakarta Commons名气挺大的,我一起想学学,却一直忘,也不知道该怎么用(以前只听过BeanUtils, 用来注入一个bean的)。
马上从Apache下了一个来试试。注意,要用起来FileUpload,还要下一个Commons IO。里面对国际化的支持还是不错的,至少我用item.getName()出来的居然就有中文。
但保存文件还是遇到了问题。为了对国际化的良好支持,要达到以下几点:在页面显示的文件名要是中文的,下载的时候保存的文件名也要是中文的,同时文件要保存在一个目录下。
在做链接生成的时候,我发现浏览器会把链接中的中文自动encode成UTF-8的URL表示(就是%20%30那种)。没错,文件保存也可以用这个名字,这样在不支持中文路径的linux上也可以保存中文文件名了。然后我自己写了一个下载的Servlet,用于从本地读取文件内容,并写入response.getWriter()里。这样的话文件名自动就成中文了。至于重名问题,我的链接是这么写的: http://www.test.com/download/1892649237492/%8D%82.txt 结果文件名会自动转成中文的(IE6, FF1.5通过)。但是实际的文件名是1892649237492%8D%82.txt,就是没有了"/",这一点,在Download Servlet里解析。同时DownloadServlet里加了一些逻辑,保护系统的安全。
相关文章推荐
- wordpress文件上传部分中文字符乱码解决方案
- UTF8 编码时 FCKeditor编辑器上传文件时中文文件名解决方案
- wordpress4.5.4 文件上传中文名解决方案
- HttpClient/HttpMime 4.3以后版本的中文编码和文件上传解决方案
- [转]JSP或servlet中(以及上传下载文件)中文乱码或不显示的解决方案
- JSP或servlet中(以及上传下载文件)中文乱码或不显示的解决方案
- MultipartEntity上传文件时传递中文参数出现乱码的解决方案
- Struts2文件上传与下载中的中文乱码问题解决方案
- php.ini针对文件上传的修改还有move_uploaded_file()函数对中文字符上传失败的解决方法
- php文件上传后台存储中文乱码问题解决方案
- 上传中文文件到linux文件出现乱码问题的解决方案
- flask-admin fileadmin 上传文件,中文名的解决方案 重写部分secure_filename
- [转载]Flash新版本11.8下 上传文件时中文名显示乱码问题解决方案
- 【HTTPClient 系列】HttpClient4.2.5上传文件,无中文文件名问题
- JSP 文件中文乱码的类型分析及解决方案
- 关于post文件上传不能返回路径问题的解决方案
- 获取文件上传页面中文数据时乱码问题的解决办法
- WEB版一次选择多个文件进行批量上传(Plupload)的解决方案
- URL中传递中文参数 以流形式文件上传下载 演变
- 最近在Ubuntu9.04下用tomcat发布一个用java开发的WEB项目(tomcat6+mysql)。在windows下编码完全没问题,到了linux下后,到处一大堆得乱码(主要是针对中文)。上