java下载文件
本教程操作环境:windows7系统、java10版,DELL G3电脑。
1.IO流的方式下载
public HttpServletResponse download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径。 File file = new File(path); // 取得文件名。 String filename = file.getName(); // 取得文件的后缀名。 String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase(); // 以流的形式下载文件。 InputStream fis = new BufferedInputStream(new FileInputStream(path)); byte[] buffer = new byte[fis.available()]; fis.read(buffer); fis.close(); // 清空response response.reset(); // 设置response的Header response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes())); response.addHeader("Content-Length", "" + file.length()); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); toClient.write(buffer); toClient.flush(); toClient.close(); } catch (IOException ex) { ex.printStackTrace(); } return response; }
2.采用RequestDispatcher的方式进行
jsp页面中添加如下代码:
<% response.setContentType("application/x-download");//设置为下载application/x-download String filedownload = "/要下载的文件名";//即将下载的文件的相对路径 String filedisplay = "最终要显示给用户的保存文件名";//下载文件时显示的文件保存名称 filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8"); response.addHeader("Content-Disposition","attachment;filename=" + filedisplay); try { RequestDispatcher dis = application.getRequestDispatcher(filedownload); if(dis!= null) { dis.forward(request,response); } response.flushBuffer(); } catch(Exception e) { e.printStackTrace(); } finally { } %>
3.将文件下载到页面
注意:实际开发中绝大部分情况都是将文件存储在单独的服务器,但是 也会有一些小文件可以存放在项目中,此处存放在项目目录下,其实代码大同小异,几乎无差别。
<% response.setContentType("application/x-download");//设置为下载application/x-download String filedownload = "/要下载的文件名";//即将下载的文件的相对路径 String filedisplay = "最终要显示给用户的保存文件名";//下载文件时显示的文件保存名称 filenamedisplay = URLEncoder.encode(filedisplay,"UTF-8"); response.addHeader("Content-Disposition","attachment;filename=" + filedisplay); try { RequestDispatcher dis = application.getRequestDispatcher(filedownload); if(dis!= null) { dis.forward(request,response); } response.flushBuffer(); } catch(Exception e) { e.printStackTrace(); } finally { } %>
以上就是在java中下载文件的三种方法,有这类需求的小伙伴,可以试着用java的知识来对文件的下载进行操作。看完本篇文章后,就可以运行代码试试成果了。更多Java学习指路:
化拓教育网还为您提供以下相关内容希望对您有帮助:
java文件批量下载不打包怎么办
使用IO流和ZipOutputStream。根据查询太平洋电脑网显示。1、可以通过使用IO流和ZipOutputStream类来实现下载多个文件并打包的功能。2、Java是一门面向对象的编程语言,不仅吸收C加加语言的各种优点,还摒弃C加加里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
java通过url来下载的文件如何将默认文件名不是路径
java软件如何设置保存文件的默认路径?右键单击“我的电脑”、“属性”、“高级”、“环境变量”,在“环境变量”中创建新的变量名classpath。变量值:。;丙:程序文件Javalib丙:程序文件Javalib程序文件Java变量值的末尾。程序文件Java宾,注意两条路径之间的额外符号。如何填写URL地址?正确的URL写法是协议...
下载电脑java时,下载失败,该怎么办?
检查网络连接:确保你的网络连接正常,尝试重新下载Java文件,有时下载失败可能是因为网络连接不稳定或中断导致的。清除浏览器缓存:如果是通过浏览器下载Java,尝试清除浏览器的缓存和Cookie,然后重新下载。使用其他浏览器或下载工具:如果某个浏览器下载失败,可以尝试换用其他浏览器,或者使用专门的下载工具...
怎样编一个能实现文件下载功能的JAVA程序
1、web.xml文件中增加 <mime-mapping> <extension>doc</extension> <mime-type>application/vnd.ms-word</mime-type> </mime-mapping> 2、程序如下:<%@page language="java" import="java.net.*" pageEncoding="gb2312"%> < response.setContentType("application/x-download");//设置为下载a...
java文件写入后下载下来为啥是压缩包
该原因是在写入文件时使用了压缩算法,或者在下载文件时使用了压缩格式。如果在写入文件时使用了压缩算法,例如使用GZIPOutputStream或ZipOutputStream等类来写入文件,那么写入的文件就是压缩文件。在下载文件时,如果使用了压缩格式,例如ZIP或GZIP等格式,那么下载下来的文件就是压缩包。
java怎么通过链接下载文件,然后保存到指定位置?
回答:点击下载,其实就是访问文件路径,通过流读取,然后再指定文件保存位置.还是通过流保存. file(连接路径)>>input>>out>>file(保存位置)
用java实现文件的上传与下载
1.下载简单,无非是把服务器上的文件或者数据库中的BLob(或其他二进制型),用流读出来,然后写到客户端即可,要注意 ContentType。2.上传,可以用Apache Commons Upload等开源工具,或者自己写:form要用enctype="multipart/form-data"然后服务器端也是用IO把客户端提交的文件流读入,然后写到服务器的...
怎样通过java实现服务器上文件下载?
包,模拟一个Get请求,发送到网址172.16.30.230/文件地址。这个文件地址不能是E/Map/123.txt,必须是暴露在服务器中的应用里的。就像你写的应用里的一个jsp页面的目录。成功发送get请求后,就会得到response,里面有流。就是你下载的文件,然后可以通过FileOutputStream,指定你输出目录,写到磁盘上。
javaweb在linux下部署,下载文件报403错误
javaweb在linux下部署,下载文件报403错误三步解决方法。1、根据查询相关公开信息:打开项目结构。2、打开工件(即Artifacts)并点开+号选择归档(Archive)选择要打包的那个模块点击应用和确定。3、构建(Build)工件=生成war包。4、bulid之后就会生成war包了,此时到目录里就可以看到war包了,一般在out的...
JAVA 如何一次下载多个文件
创建多线程下载 如果说方便下载,是打包再下载 ~~~