文件下载jspsmartupload

 文件下载的原理或者步骤

1.将文件名作为超链接的参数,但点击下载时,提交到处理的页面或者action,在jsp或者java类里(被action调用)做如下核心步骤:

a.获得这个文件路径参数

b.response.setContentType("application/x-msdownload"); // 弹出那个下载框的形式显示

m_contentDisposition = "attachment;" //指向要下载的文件名,没有下面这一句,将默认为下载本页面

 response.setHeader("Content-Disposition",m_contentDisposition + " filename=" + getFileName(s));

response.getOutputStream().write(abyte0,0,j); //输出到页面

 

 如果文件名是中文名,那么直接先转为utf-8的字节,接着将字节转为int ,接着转为16进制,下面程序返回了一个将中文进行编码的字符串

 public static String toUtf8String(String s) {
    	StringBuffer sb = new StringBuffer();
    	for (int i=0;i<s.length();i++) {
    	    char c = s.charAt(i);
    	    if (c >= 0 && c <= 255) {
    		sb.append(c);
    	    } else {
    		byte[] b;
    		try {
    		    b = Character.toString(c).getBytes("utf-8");
    		} catch (Exception ex) {
    		    System.out.println(ex);
    		    b = new byte[0];
    		}
    		for (int j = 0; j < b.length; j++) {
    		    int k = b[j];
    		    if (k < 0) k += 256;
    		    sb.append("%" + Integer.toHexString(k).
    		    toUpperCase());
    		}
    	    }
    	}
    	return sb.toString();
        }

 如果使用jspsmartupload,那么很简单,几步就搞定了,不过写在jsp页面好,可以容易就得到了pageContext

,如果文件名是中文,那么调用上面那个函数,转一下中文就搞定了

SmartUpload su = new SmartUpload();
su.initialize(pageContext);  // 初始化

su.downloadFile("//download//小聪科软通讯表.xls"); // 下载文件

 实例在http://localhost:8088/jspAndServlet/download/download.jsp 这里就不上传了

你可能感兴趣的:(C++,c,jsp,C#,J#)