生活随笔
收集整理的这篇文章主要介绍了
Java文件下载详解
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
1.使用HttpServletResponse实现
Servlet代码:
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {//创建要下载的文件的对象(参数为要下载的文件在服务器上的路径)File serverFile=new File("D:/myText.doc");//设置要显示在保存窗口的文件名,如果文件名中有中文的话,则要设置字符集,否则会出现乱码。另外,要写上文件后缀名String fileName=java.net.URLEncoder.encode("Java编程思想最新版.doc","utf-8");//该步是最关键的一步,使用setHeader()方法弹出"是否要保存"的对话框,打引号的部分都是固定的值,不要改变response.setHeader("Content-disposition","attachment;filename="+fileName);/** 以下四行代码经测试似乎可有可无,可能是我测试的文件太小或者其他什么原因。。。*/response.setContentType("application/msword");//定义下载文件的长度 /字节long fileLength=serverFile.length();//把长整形的文件长度转换为字符串String length=String.valueOf(fileLength);//设置文件长度(如果是Post请求,则这步不可少)response.setHeader("content_Length",length);/**以上内容仅是下载一个空文件*以下内容用于将服务器中相应的文件内容以流的形式写入到该空文件中*///获得一个 ServletOutputStream(向客户端发送二进制数据的输出流)对象OutputStream servletOutPutStream=response.getOutputStream();//获得一个从服务器上的文件myFile中获得输入字节的输入流对象FileInputStream fileInputStream=new FileInputStream(serverFile);byte bytes[]=new byte[1024];//设置缓冲区为1024个字节,即1KBint len=0;//读取数据。返回值为读入缓冲区的字节总数,如果到达文件末尾,则返回-1while((len=fileInputStream.read(bytes))!=-1){ //将指定 byte数组中从下标 0 开始的 len个字节写入此文件输出流,(即读了多少就写入多少)servletOutPutStream.write(bytes,0,len); }servletOutPutStream.close();fileInputStream.close(); }
注1:setContentType(String type)方法里的参数type是指一个用于指定文件内容的MIME类型
常见的MIME类型及含义:
text/html 超文本标记语言文本(.html)
text/plain 普通文本(.txt)
image/gif GIF图形(.gif)
image/jpeg JPEG图形(.jpeg或.jpg)
video/x-msvideo AVI文件(.avi)
application/zip zip压缩包(.zip)
application/msword word文档(.doc)
application/vnd.ms-excel excel文档(.xls)
audio/x-mpeg mp3音乐文件(.mp3)
jsp代码:
<body><center><form action="DownLoadServlet" method="post"><a href="javascript:document.forms[0].submit()">单击下载</a></form></center>
</body>
转载于:https://www.cnblogs.com/xcxcxcxc/p/5541233.html
总结
以上是生活随笔为你收集整理的Java文件下载详解的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。