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

下载文件有时候直接就是一个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 != (len = is.read(b))) {
		    	os.write(b, 0, len);
		    }
		    os.flush();
		    
		    os.close();
		    is.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

 

你可能感兴趣的:(javaio)