读取数据库中内容实现文件的下载

               

因为将上传的内容放入到数据库中,所以也就不方便给定一个确切的地址让浏览器来下载,希望直接通过数据流的读

取实现文件的下载,这样更加方便一些。下面我们来演示一下文件的下载代码

package oop.hg.ytu.servlet;import java.io.IOException;import java.io.InputStream;import java.net.URLEncoder;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import oop.hu.ytu.dao.DownLoadDomain;public class DownLoad extends HttpServlet /**  * 实现文件的下载  */ private static final long serialVersionUID = 1Lpublic void doGet(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {  DownLoadDomain dao = new DownLoadDomain();  response.setContentType("text/html;charset=UTF-8");   // 设置为下载application/x-download  response.setContentType("application/x-download");  String fileName = request.getParameter("fileName");  fileName = new String(fileName.getBytes("ISO-8859-1"),"UTF-8");  String type = dao.getType(fileName);    type = "."+type;  type = fileName + type;    type = URLEncoder.encode(type, "UTF-8");  response.addHeader("Content-Disposition", "attachment;filename="        + type);  InputStream in = dao.readBlob(fileName);  ServletOutputStream out = response.getOutputStream();      byte[] buff = new byte[1024];  int i = 0;  while((i = in.read(buff))>0){   out.write(buff, 0, i);  }  out.flush();  out.close();  in.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response)   throws ServletException, IOException {  doGet(request, response); }}

这里主要就是下载的设置的那些头文件,请求头,还有就是下载的文件名如果含有中文,需要进行一下字符集的编码

才能够实现不乱码!

           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自blog.csdn.net/qq_43679366/article/details/86931336