当我们在jsp中使用smartUpload实现文件的下载时:会出现response.getOutputstream()重复使用和中文文件不能识别的问题.
[@more@]当在Jsp文件中要实现文件下载的时候,我建议大家采用下列方法: jsp 文件传递参数, 用单独的Servlet下载文件!
(1)先下载smartUpload.jar放到WEB-INF/lib目录下.
smartUpload下载地址:http://yifanwq.itpub.net/get/12099/10459-jspSmartUpload.jar
(2)在WEB-INF/classes目录下产生cn.com.servlet.Servlet
package cn.com.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.jspsmart.upload.SmartUpload;
public class SaveAs extends HttpServlet
{
private static final long serialVersionUID = 1L;
public SaveAs()
{
super();
}
public void destroy()
{
super.destroy();
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
response.setContentType("text/html");
request.setCharacterEncoding("GBK");
// 新建一个SmartUpload对象
SmartUpload su = new SmartUpload();
String name=new String(request.getParameter("name").getBytes("ISO-8859-1"));
// 初始化
su.initialize(this.getServletConfig(),request,response);
su.setContentDisposition(null);//如果要实现单击在浏览器打开,注释该即可.
// 下载文件
try
{
System.out.print(name);
su.downloadFile("D:/"+name);//目录根据实际改变
}
catch(Exception e)
{
System.out.println(e);
}
}
}
(3)在web.xml中加入
(4)在jsp页面中建立如下连接即可:(页面的编码一定要是GBK)
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
(5)打开页面测试.
总结:此种做法避免了在下载中文文件之前要改名的问题.在打开下载对话框时,会自己变成英文.方便用户的辩认.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/788553/viewspace-823152/ ,如需转载,请注明出处,否则将追究法律责任。