java web 基于IO流的文件下载示例

本文介绍如何在Java Web中通过IO流实现文件下载,以解决直接使用链接可能导致的问题,如统计下载次数、文件位于非服务器目录以及防止某些文件类型直接打开等。示例代码提供详细实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载文件有时候直接就是一个a链接,链接文件地址,很ok,很简单,但是这样有些弊病,比如说,我要是想统计文件下载数量呢,再加上,文件并不是都放在服务器目录下,也有可能是别的目录,再或者,像 .txt 的直接a链接就打开了。所以使用程序来下载也是很有必要的。

show code

直接上代码吧

@RequestMapping("/downloadFile")
	public void getFile(String name, HttpServletRequest request , HttpServletResponse response) {
		try {
			System.out.println( name );
			
			File file = new File(name);
			InputStream is = new BufferedInputStream( new FileInputStream(file) );
			OutputStream os = new BufferedOutputStream( response.getOutputStream() );
			
			response.setCharacterEncoding("utf-8");
			// 设置返回类型
		    response.setContentType("multipart/form-data");
		    // 文件名转码一下,不然会出现中文乱码
		    response.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("--chenparty下载站--" + file.getName(),"UTF-8"));
		    // 设置返回的文件的大小
		    response.setContentLength((int)file.length());
		    
		    byte [] b = new byte[1024];
		    int len = 0;
		    
		    while(-1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值