博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件下载
阅读量:2338 次
发布时间:2019-05-10

本文共 1524 字,大约阅读时间需要 5 分钟。

·文件下载

Step1:需要通过HttpServletResponse.setContentType方法设置Content-type头字段的值,为浏览器无法使用某种方式或激活某个程序来处理的MIME类型,例如:"application/octet"或"application/x-msdownload"等、

Step2:需要通过HttpServletResponse.setHeader方法设置Content-Disposition头的值为"attachment;filename=文件名"

Step:读取下载文件,调用HttpServletResponse.getOutputStream方法返回的OutputStream对象来向客户端写入附件内容。

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {				// 设置请求的编码		request.setCharacterEncoding("UTF-8");		// 得到要下载的文件名		String fileName = request.getParameter("fileName");		// 得到文件存放咋服务器中的真实路径		String filePath = request.getServletContext().getRealPath("/upload/" + fileName);		// 通过路径得到file对象		File file = new File(filePath);		// 判断文件是否存在,并且是一个标准文件		if (file.exists() && file.isFile()) {						// 设置相应类型 application/octet-stream			response.setContentType("application/x-msdownload");			// 设置头信息			response.setHeader("Content-Disposition", "attachment;filename=" + fileName);			// 得到文件的输入流			InputStream in = new FileInputStream(file);			// 得到字节输出流			ServletOutputStream out = response.getOutputStream();			// 定义字节数组 和 长度			byte[] bytes = new byte[1024];			int len = 0;			// 遍历			while((len = in.read(bytes)) != -1) {				out.write(bytes, 0, len);			}			// 关闭资源			out.close();			in.close();					} else {			System.out.println("文件不存在!");		}			}

·超链接下载

1、超链接遇到浏览器无法识别的资源时,会自动下载;
2、超链接遇到浏览器能够识别的资源,则会直接显示;
3、如果想要让能够被识别的资源进行下载,则需要设置download属性
download属性:
规定浏览器进行下载。但有些浏览器并不支持。
download属性如果不设置值,则下载的文件名为默认文件名;如果设置了属性,则下载的文件名为download的属性值

转载地址:http://qfgpb.baihongyu.com/

你可能感兴趣的文章
在jQuery中每5秒调用一次函数的最简单方法是什么? [重复]
查看>>
如何在Windows上安装和使用curl?
查看>>
Angular 2+中的ngShow和ngHide等效于什么?
查看>>
HTML“no-js”类的目的是什么?
查看>>
如何将Java String转换为byte []?
查看>>
@Transactional注释在哪里?
查看>>
找不到Gradle DSL方法:'runProguard'
查看>>
AngularJS ngClass条件
查看>>
连字符分隔的大小写是什么? [关闭]
查看>>
为什么Java中没有SortedList?
查看>>
在Go中表示枚举的惯用方法是什么?
查看>>
如何在本地运行travis-ci
查看>>
模板中关键字“ typename”和“ class”的区别?
查看>>
在React中显示或隐藏元素
查看>>
暂存已删除的文件
查看>>
为什么需要在脚本文件的开头加上#!/ bin / bash?
查看>>
ReactJS-每次调用“ setState”时都会调用渲染吗?
查看>>
如何在Ubuntu上安装Boost
查看>>
如何在变更事件中使用广播?
查看>>
如何解决错误:使用nodejs时监听EADDRINUSE?
查看>>