JAVA实现文件下载

	public void downloading(HttpServletResponse response) throws Exception{
		//String path = request.getSession().getServletContext().getRealPath("/");
		//设置源文件路径,此处为桌面
		String path = "C:"+File.separator+"Users"+File.separator+"Administrator"+File.separator+"Desktop";
		//设置文件名
		String fileName = "流程图.pptx";
		File file = new File(path+File.separator+fileName);
		if(file.exists()){
			//写明要下载文件的大小(不要也行,一般浏览器都会自动计算)
			response.setContentLength((int) file.length());
			//设置下载文件名编码
			fileName = URLEncoder.encode(fileName, "UTF-8");
			//告诉浏览器用下载的方式打开文件
			response.setHeader("Content-Disposition", "attachment;filename="+fileName);
			//指明response的返回对象是文件流
			response.setContentType("application/octet-stream");
			FileInputStream fileInputStream = new FileInputStream(file);
			BufferedInputStream bufferedInputStream = new BufferedInputStream(fileInputStream); 
			//bufferedInputStream.available()是输入流不被阻塞情况下,下一次可以读取到的数据长度
			byte[] b = new byte[bufferedInputStream.available()];
			//先把文件内容读到缓冲区
			bufferedInputStream.read(b);
			//再把缓冲区内容写到response的输出流
			OutputStream outputStream = response.getOutputStream();
			outputStream.write(b);
			bufferedInputStream.close();
			outputStream.flush();
			outputStream.close();
		}else{
			System.out.println("文件不存在!");
		}
	}


猜你喜欢

转载自blog.csdn.net/weixin_40162920/article/details/79581118