liferay二次开发部署在weblogic上的文件下载中文名问题解决
2015-06-10 19:58
561 查看
问题
在liferray上开发portlet,下载文件时候使用portlet的ResourceRequest做请求代理访问后台,在下载文件名字时使用URL类来打开连接,获取InpurtStream,比如连接为:http:/xxx.com/xxx/xxx/中文文件名.txt。如果项目部署在tomcat中的时候,使用代码
String url = "http://xxx.com/xxx/xxx/中文文件名.txt"; URL urls = new URL(url); InputStream input = urls.openStream();
后台能接收到请求并且返回流文件,然后下载成功。
当把项目部署在weblogic11g的时候,后台接收到的url文件名部分会出现乱码情况,导致无法正确返回文件,执行到
urls.openStream()的时候报错。
解决方法
把中文名部分编码成URL编码格式(也叫百分号编码):String url = "http://xxx.com/xxx/xxx/中文文件名.txt"; int index = url.lastIndexOf("/"); String path = url.substring(0, index + 1); String fileName = url.substring(index + 1); String encodeName = URLEncoder.encode(fileName, "UTF-8"); URL urls = new URL(path + encodeName); InputStream input = urls.openStream();
这样编码之后后端就能接收到中文文件的下载请求,然后正确返回数据了。
相关文章推荐
- Leetcode[19]-Remove Nth Node From End of List
- js中SetInterval与setTimeout用法
- JSON解析---初识
- JS实现简单的图片轮换效果
- css中的clear和float
- 前端开发必备!Emmet使用手册
- bootstrap 表格、表单、面板、模态框
- jquery 上传图片自由截取
- javascript日期格式相减,计算出天数
- CSS选择器笔记
- 动态网页爬取例子(WebCollector+selenium+phantomjs)
- 【原创】bootstrap框架的学习 第七课 -[bootstrap表格]
- javascript splice()插入、删除或替换数组
- echarts.js使用方法
- css中的 border-image详解
- JavaScript 自定义对象
- 我所了解的javaScript细节
- JS中需要注意的知识点
- protocol buffers vs json vs XML
- PHP Warning: date() [function.date]: It is not safe to rely on the system's timezone