黑马程序员技术交流社区

标题: 下面这段代码为什么不能实现文件下载,而是在页面上直接显示? [打印本页]

作者: 一梦千寻    时间: 2013-12-18 21:58
标题: 下面这段代码为什么不能实现文件下载,而是在页面上直接显示?
package cn.itcast.ResPonse;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class PictureDownload extends HttpServlet {

       
        public void doGet(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {
                 String path=this.getServletContext().getRealPath("/download/9.jpg");
                 String filename=path.substring(path.lastIndexOf("\\")+1);
                // System.out.println(filename);
                 response.setHeader("content-disposition", "attachement;filename="+filename);
                 InputStream in=null;
                 OutputStream out=null;
                 byte [] by=new byte[1024];
                 int count=0;
                 in=new FileInputStream(path);
                 out=response.getOutputStream();
                 while((count=in.read(by))>0){
                         out.write(by, 0, count);
                 }
                 in.close();
                 out.close();
                         
                       
                                 
                       
                         
                         
                 
               
                 
                 
                 

        }

       
        public void doPost(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {

               
        }

}

作者: 任亚俊    时间: 2013-12-20 12:14
本帖最后由 任亚俊 于 2013-12-20 12:16 编辑

输出流不能用response对象获取,而应该新建一个文件输出流,输出到指定的路径,可以让用户指定,也可以自己固定一个地址。把 out=response.getOutputStream();改成 FileOutputStream out=new FileOutputStream("D:/down.jpg");即可。文件会下载到D盘根目录。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2