[JAVAWEB实战篇]---jsp文件下载
2013-09-22 17:58
295 查看
jsp文件下载完整方法
第一种:就是直接给出下载的地址,这种方式很不好,因为会暴露你的地址,带来很多不安全的因素,可以说是千万不要用这种第二种:下载页面<%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%><html>
<head>
<title>download</title></head>
<body>
<ahref="xia.jsp?filename=新建文档.txt">新建文档.txt</a>
</body>
</html>然后编写如下页面<%@pagecontentType="text/html;charset=gbk"%>
<%@pagelanguage="java"import="java.io.*,java.net.*"pageEncoding="gbk"%>
<html>
<head>
<title>test</title></head>
<body>
<%
response.setContentType("text/html");
javax.servlet.ServletOutputStreamou=response.getOutputStream();
Stringfilepath="uploadfile/";
Stringfilename=newString(request.getParameter("filename").getBytes("ISO8859_1"),"GB2312").toString();
System.out.println("DownloadFilefilepath:"+filepath);
System.out.println("DownloadFilefilename:"+filename);
java.io.Filefile=newjava.io.File(filepath+filename);
if(!file.exists()){
System.out.println(file.getAbsolutePath()+"文件不存在!");
return;
}
//读取文件流
java.io.FileInputStreamfileInputStream=newjava.io.FileInputStream(file);
//下载文件
//设置响应头和下载保存的文件名
if(filename!=null&&filename.length()>0){
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition","attachment;filename="+newString(filename.getBytes("gb2312"),"iso8859-1")+"");
if(fileInputStream!=null){
intfilelen=fileInputStream.available();
//文件太大时内存不能一次读出,要循环
bytea[]=newbyte[filelen];
fileInputStream.read(a);
ou.write(a);
}
fileInputStream.close();
ou.close();
}
%>
</body>
</html>第三种方法使用servlet首先配置web.xml<servlet>
<servlet-name>DownloadFile</servlet-name>
<servlet-class>libin123.com.cn.servlet.DownloadFile</servlet-class>
</servlet><servlet-mapping>
<servlet-name>DownloadFile</servlet-name>
<url-pattern>/downloadfile</url-pattern>
</servlet-mapping>编写DownloadFile.java类packagelibin123.com.cn.servlet;importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importcom.sun.image.codec.jpeg.ImageFormatException;
importcom.sun.image.codec.jpeg.JPEGCodec;
importcom.sun.image.codec.jpeg.JPEGImageDecoder;publicclassDownloadFileextendsHttpServlet{privatestaticfinallongserialVersionUID=1L;publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
response.setContentType("text/html");
javax.servlet.ServletOutputStreamout=response.getOutputStream();
Stringfilepath=request.getRealPath("/")+"uploadfile/";
Stringfilename=newString(request.getParameter("filename").getBytes("ISO8859_1"),"GB2312").toString();
System.out.println("DownloadFilefilepath:"+filepath);
System.out.println("DownloadFilefilename:"+filename);
java.io.Filefile=newjava.io.File(filepath+filename);
if(!file.exists()){
System.out.println(file.getAbsolutePath()+"文件不存在!");
return;
}
//读取文件流
java.io.FileInputStreamfileInputStream=newjava.io.FileInputStream(file);
//下载文件
//设置响应头和下载保存的文件名
if(filename!=null&&filename.length()>0){
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition","attachment;filename="+newString(filename.getBytes("gb2312"),"iso8859-1")+"");
if(fileInputStream!=null){
intfilelen=fileInputStream.available();
//文件太大时内存不能一次读出,要循环
bytea[]=newbyte[filelen];
fileInputStream.read(a);
out.write(a);
}
fileInputStream.close();
out.close();
}
}publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{
response.setContentType("text/html");
PrintWriterout=response.getWriter();
out.println("<!DOCTYPEHTMLPUBLIC-//W3C//DTDHTML4.01Transitional//EN>");
out.println("<HTML>");
out.println("<HEAD><TITLE>AServlet</TITLE></HEAD>");
out.println("<BODY>");
out.print("Thisis");
out.print(this.getClass().getName());
out.println(",usingthePOSTmethod");
out.println("</BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
}下载页面<%@pagelanguage="java"import="java.util.*"pageEncoding="GB18030"%>
<html>
<head></head>
<body>
<ahref="downloadfile?filename=新建文档.txt">新建文档.txt</a>
</body>
</html>
相关文章推荐
- javaweb jsp页面中实现文件下载
- [JAVAWEB实战篇]---java文件上传和下载的网摘整理
- jsp实现从服务器下载xls文件到客户端的方法
- 遇到的问题:myelipse下,用tomcat浏览jsp文件时,出现迅雷自动弹出下载该jsp页面
- 【ZT】Jsp/Servlet:实现文件上传与下载【三】
- jsp - 下载文件
- 使文件下载的自定义连接支持 FlashGet 的断点续传多线程链接下载! JSP/Servlet 实现!
- 用jspsmartupload实现文件的上传和下载
- Java / JSP 文件上传与下载
- jspsmart实现文件上传下载及jspSmartUpload.jar下载
- JSP 文件上传下载系列之二[Commons fileUpload]
- JSP下载服务器文件
- JavaWeb文件下载
- JSP文件下载及出现getOutputStream() has already been called for this response的解决方法
- JSP 文件下载的相对完整代码(解决中文问题和Weblogic报错)
- 如何使 FlashGet "正常合法" 下载 Session 中的自定义文件链接呢? JSP/Servlet 实现!
- struts2文件下载 与 jsp文件下载的方式
- jsp下载文件的实现方法及注意事项 (转)
- JavaWeb实现文件上传下载功能实例解析
- JSP文件的上传和下载