对于jsp中文名文件下载的解救方法!!

<%@page language="java" contentType="application/x-msdownload" import="java.io.*,java.net.*" pageEncoding="gb2312"%><%
/*
从链接处传入path的参数如download.jsp?path=userfile/123.jpg,download.jsp为本页JSP
注意path是tomcat下的相对路径
*/
String temp=request.getParameter("path");
if(temp==null)
 temp="";
String path=new String(temp.getBytes("8859_1"),"gb2312");
response.reset();
response.setContentType("application/x-download");
String filenamedownload = path;
String filenamedisplay = path.substring(path.lastIndexOf("/")+1,path.length());
filenamedisplay = URLEncoder.encode(filenamedisplay,"UTF-8");
response.addHeader("Content-Disposition","attachment;filename=" + filenamedisplay);
OutputStream output = null;
FileInputStream fis = null;
try
    {
        output  = response.getOutputStream();
        filenamedownload=request.getRealPath("/")+filenamedownload;
        //System.out.println("filenamedownload:"+filenamedownload);
        File file=new File(filenamedownload);
        if (!file.exists()){
          out.println("对不起,文件已删除");
          return;
        }
        fis = new FileInputStream(filenamedownload);
       
        byte[] b = new byte[1024];
        int i = 0;
        while((i = fis.read(b)) > 0)
        { output.write(b, 0, i);
        }
        output.flush();
    }
    catch(Exception e)
    {
        System.out.println("Error!");
        e.printStackTrace();
    }
    finally
    {
        if(fis != null)
        {
            fis.close();
            fis = null;
        }
        if(output != null)
        {
            output.close();
            output = null;
        }
    }
%>
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值