- response.setContentType("application/x-download");//设置为下载application/x-download
- String filedownload = "/要下载的文件名";//即将下载的文件的相对路径
- String filedisplay = "最终要显示给用户的保存文件名";//下载文件时显示的文件保存名称
- String filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8");
- response.addHeader("Content-Disposition","p_w_upload;filename=" + filedisplay);
- try
- {
- RequestDispatcher dis = application.getRequestDispatcher(filedownload);
- if(dis!= null)
- {
- dis.forward(request,response);
- }
- response.flushBuffer();
- }
- catch(Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- }
- <%@page language="java" contentType="application/x-msdownload" pageEncoding="gb2312"%>
- <%
- //关于文件下载时采用文件流输出的方式处理:
- //加上response.reset(),并且所有的%>后面不要换行,包括最后一个;
- response.reset();//可以加也可以不加
- response.setContentType("application/x-download");
- //application.getRealPath("/main/mvplayer/CapSetup.msi");获取的物理路径
- String filedownload = "想办法找到要提供下载的文件的物理路径+文件名";
- String filedisplay = "给用户提供的下载文件名";
- String filedisplay = URLEncoder.encode(filedisplay,"UTF-8");
- response.addHeader("Content-Disposition","p_w_upload;filename=" + filedisplay);
- java.io.OutputStream outp = null;
- java.io.FileInputStream in = null;
- try
- {
- outp = response.getOutputStream();
- in = new FileInputStream(filenamedownload);
- byte[] b = new byte[1024];
- int i = 0;
- while((i = in.read(b)) > 0)
- {
- outp.write(b, 0, i);
- }
- //
- outp.flush();
- //要加以下两句话,否则会报错
- //java.lang.IllegalStateException: getOutputStream() has already been called for //this response
- out.clear();
- out = pageContext.pushBody();
- }
- catch(Exception e)
- {
- System.out.println("Error!");
- e.printStackTrace();
- }
- finally
- {
- if(in != null)
- {
- in.close();
- in = null;
- }
- //这里不能关闭
- //if(outp != null)
- //{
- //outp.close();
- //outp = null;
- //}
- }
- %>
- <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
- <a href="do_download.jsp?url=xxxxxx">点击下载 千千动听</a>
- <%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
- <%@page import="com.jspsmart.upload.SmartUpload"%>
- <%
- SmartUpload su=new SmartUpload();
- su.initialize(pageContext);
- su.setContentDisposition(null);//禁止浏览器打开文件 只能下载
- su.downloadFile("upload/1.txt");
- //out.clear();
- //out=pageContext.pushBody();
- %>
转载于:https://blog.51cto.com/shamrock/870581