`

java文件下载,并修改文件名,解决中文乱码

 
阅读更多
public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, java.io.IOException {
			String saveUrl = request.getParameter("url");
			
			//有配置存储路径
			String savePath = ConfUtil.getValue("savePath");
			if(savePath != null && !"".equals(savePath)) {
				saveUrl = savePath + "/" + saveUrl;
			}else{
			//无存储路径时,读默认的存储位置,sc项目下
				saveUrl = request.getSession().getServletContext()
						.getRealPath("") + saveUrl;
			}
	        File f = new File(saveUrl);
	        if (!f.exists()) {
	            response.sendError(404, "File not found!");
	            return;
	        }
	        BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
	        byte[] buf = new byte[1024];
	        int len = 0;

	        String fn = request.getParameter("fn");
			if(fn == null || fn.isEmpty()){
				fn = f.getName();
			}
			
	        System.out.println(f.getName()+"============");
	        
	        response.reset(); // 非常重要
	        // 纯下载方式
            response.setContentType("application/x-msdownload");
            System.out.println(f.getName());
            System.out.println(fn);
            String formatFileName = encodingFileName(fn);
//	        response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());
	        response.setHeader("Content-Disposition", "attachment; filename=" + formatFileName);
	        
	        OutputStream out = response.getOutputStream();
	        while ((len = br.read(buf)) > 0)
	            out.write(buf, 0, len);
	        br.close();
	        out.close();
		
		}
	
	public static String encodingFileName(String fileName) {
        String returnFileName = "";
        try {
            returnFileName = URLEncoder.encode(fileName, "UTF-8");
            returnFileName = StringUtils.replace(returnFileName, "+", "%20");
            if (returnFileName.length() > 150) {
                returnFileName = new String(fileName.getBytes("GB2312"), "ISO8859-1");
                returnFileName = StringUtils.replace(returnFileName, " ", "%20");
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            if (log.isWarnEnabled()) {
                log.info("Don't support this encoding ...");
            }
        }
        return returnFileName;
    }

 

分享到:
评论

相关推荐

    jsch-0.1.53 使用sftp协议上传下载文件名中文乱码解决办法

    jsch-0.1.53 不支持修改编码格式,sftp.setFilenameEncoding("GBK");这样修改是不起作用的,所以必须修改源码。此处是修改源码后重新导出的jar包。

    jsch文件名中文乱码解决办法

    感谢你的下载,文件说明如下: *jsch的源文件 *jsch的依赖包 *用jsch源文件及依赖包构建的项目,便于修改其源码* ...如果乱码问题依然没解决,这个类也许能帮你找到你需要更改的编码类型。然后修改那三处地方。

    java导出文件文件名处理

    java导出文件文件名处理

    JDK ZipEntry压缩中文文件名乱码解决

    项目中碰到问题.jdk zipEntry 压缩中文文件名乱码  上网查了下,有两种方法,一种修改jdk ZipInputStream及ZipOutputStream 的源文件,比较麻烦,不建议此项.  第二种 就是拿来主义,因为 开源项目 Ant 里已经有...

    sftp解决上传中文文件乱码 jsch-0.1.54.jar

    sftp解决上传中文乱码,sftp.setFilenameEncoding("GBK");修改是不起作用的,修改源码后重新导出的jar包。

    jspsmartupload-解决中文乱码

    最近实验室做了一个项目,使用jspsmartupload来实现的文件的上传下载,原来在windows平台运行的挺好,但是后来系统移植到linux平台上,结果在上传或下载的文件名中有中文时就会出现乱码。后来查了网上一些人的解决...

    org.apache.tools.zip解决解压乱码问题

    * @param zipFileName 压缩产生的zip包文件名--带路径,如果为null或空则默认按文件名生产压缩文件名 * @param relativePath 相对路径,默认为空 * @param directory 文件或目录的绝对路径 * void */ ...

    ApacheJMeter_http.jar解决jmeter5.4.3版本上传附件中文名乱码问题

    使用jmeter5.4.3版本,通过修改PostWriter.java,两句代码,因为用了iso编码,修改成utf-8。ApacheJMeter_http.jar下载后,放到apache-jmeter-5.4.3\lib\ext路径下,替换原来的jar包,然后重启jmeter,PS:注意在http...

    Window下adb shell中文乱码问题解决方法

    Window下,进行adb shell后,举个例子,如果你的sdcard下保存着中文字符文件名的文件,则在CMD下显示是一些无规律的中文并夹杂着乱码。 出现这种情况的原因是: Android中使用的是UTF-8字符,而CMD默认字符集是ANSI...

    ckfinder修改文件名称

    此jar包中包含原始jar、修改源码后的jar、修改的java类。 此jar包将上传后的文件名修改为日期类型,由于上传文件到linux下中文出现乱码,所以将此jar包源代码做了修改,并重新生成jar

    fckeditor for java 2.4 修改版

    以前的版本在连接上传的时候可以上传任意类型的文件,新的版本已经修改这个bug,不过还有点美中不足的就是对中文的支持还是乱码,无奈,改原代码吧,这里本人修改了文件上传到服务器上的新文件名是以系统时间来命名的,...

    jspsmartupload上传下载,已修改过源代码!

    解决jspsmartupload上传文件中文乱码 采用jspsmartupload上传文件时,如果文件名含有中文,在服务器端取得文件名是会出现乱码。如果表单项中填写了中文,一样会有乱码问题。看了下jspsmartupload的源码,改了两个...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例005 下载并安装JRE执行环境 8 实例006 编程输出星号组成的等腰三角形 9 1.2 开发工具 11 实例007 下载最新的Eclipse 11 实例008 为最新的Eclipse安装中文语言包 12 实例009 活用Eclipse的工作空间 14 实例010 在...

    linecount智能源码统计专家软件下载

    5、v3.6以后相同文件的选项条件不再为文件名、文件大小及文件修改时间都相同,现改为仅文件名相同即作为同一文件。 注意事项 1、请选择的统计文件不要带有格式信息!即用记事本打开而不会有乱码的文件。当然,...

    ApacheJMeter-http.jar

    Jmeter上传文件的文件名中文乱码修改Jmete源码重新编译

    ExportExcelUtil.java

    涉及修改单元格样式,已处理文件数据过大,文件名不同浏览器乱码问题,代码内附有详细解析,如果有问题请在csdn留言或者通过QQ694335719联系

Global site tag (gtag.js) - Google Analytics