java文件下载

来源:互联网 发布:php做游戏后端 编辑:程序博客网 时间:2024/06/05 02:22

java中文件上传和下载是比较常用的功能,今天在项目中也有用的,就整理下拿出来分享下

1、逻辑

将文件流写入到response的流中,设置response的setContentType和addHeader为流下载即可

2、代码

@RequestMapping("FileDownLoad.do")@ResponseBodypublic void FileDownLoad(HttpServletRequest request, HttpServletResponse response)throws UnsupportedEncodingException {String zbGuid = request.getParameter("zbGuid");if(zbGuid == ""){return;}Object[] fileObj = FileCommonUtil.getFileByZBGUID(zbGuid, genericDao);String fileName = FileCommonUtil.getFileNameNoEx(((File) fileObj[0]).getName());File file = (File) fileObj[0];response.setContentType("application/x-download");response.addHeader("Content-Disposition", "attachment;filename=" + fileName);FileCommonUtil.writeFileToResponse(response, file);}

工具类代码

public static void writeFileToResponse(HttpServletResponse response, File file){OutputStream outp = null;FileInputStream in = null;try {outp = response.getOutputStream();in = new FileInputStream(file);byte[] b = new byte[1024];int i = 0;while ((i = in.read(b)) > 0) {outp.write(b, 0, i);}outp.flush();} catch (Exception e) {} finally {if (in != null) {try {in.close();in = null;} catch (IOException e) {e.printStackTrace();}if (outp != null) {try {outp.close();outp = null;} catch (IOException e) {e.printStackTrace();}}}}}


0 0