方法一: /** * 下载附件 * @param response * @throws IOException * @author zhangyd-c */ @RequestMapping(value="/downloadAccessory") public void downloadAccessory(String fileName, HttpServletResponse response, HttpServletRequest request) throws IOException { request.setCharacterEncoding("utf8"); //获取项目真实路径 String ctxPath = (new StringBuilder(String.valueOf(request.getSession().getServletContext().getRealPath("/")))).append("unstandard_materials/").toString(); //获取文件的真实路径 String downLoadPath = (new StringBuilder(String.valueOf(ctxPath))).append(fileName).toString(); File files = null; InputStream fis = null; OutputStream os = null; try { //获取文件 files = new File(downLoadPath); //读取该文件输入流到缓存 fis = new BufferedInputStream(new FileInputStream(downLoadPath)); /* * fis.available():返回输入流中估计的字节数(输入流方法的下一次调用的剩余字节数)。 */ byte buffer[] = new byte[fis.available()]; //按字节读取缓存 fis.read(buffer); response.reset(); response.addHeader("Content-Disposition", (new StringBuilder("attachment;filename=")).append(new String(fileName.replaceAll(" ", "").getBytes("utf-8"), "iso8859-1")).toString()); response.addHeader("Content-Length", (new StringBuilder()).append(files.length()).toString()); os = new BufferedOutputStream(response.getOutputStream()); response.setContentType("application/octet-stream"); //将字节数组写入输出流 os.write(buffer); os.flush(); } catch (FileNotFoundException e) { response.setContentType("text/html;charset=UTF-8"); response.getWriter().write("服务器上不存在该附件(已丢失)!请联系管理员!"); } catch (IOException e) { response.setContentType("text/html;charset=UTF-8"); response.getWriter().write("服务器异常!请联系管理员!"); }finally{ if(fis != null){ fis.close(); } if(os != null){ os.close(); } } }
方法二:
/** * 下载附件 * @param response * @throws IOException */ @RequestMapping(value="/downloadAccessory") public void downloadAccessory(String fileName, HttpServletResponse response, HttpServletRequest request) throws IOException { request.setCharacterEncoding("utf8"); response.setContentType("application/octet-stream; charset=utf-8"); //获取项目真实路径 String ctxPath = (new StringBuilder(String.valueOf(request.getSession().getServletContext().getRealPath("/")))). append("unstandard_materials/").toString(); //获取文件的真实路径 String downLoadPath = (new StringBuilder(String.valueOf(ctxPath))).append(fileName).toString(); OutputStream out = null; try { response.reset(); String na = new String(fileName.getBytes("gbk"), "iso8859-1"); response.setHeader("Content-Disposition", "attachment; filename="+na); out = response.getOutputStream(); out.write(FileUtils.readFileToByteArray(new File(downLoadPath))); out.flush(); } catch (IOException e) { response.setContentType("text/html;charset=UTF-8"); response.getWriter().write("服务器异常!请联系管理员!"); }finally{ if(out != null){ out.close(); } } }
相关推荐
用ajax实现的java文件打包下载。可以输入扩展名选择文件下载。
java使用itext实现pdf文件下载小案例,通过系统路径下载,和通过浏览器下载
用java代码实现文件下载的使用例子,实用简洁。
java 实现 word 文档的在线预览,资源包含代码和jar包,下载放入项目既可以使用
Java实现文件下载功能,以WORD文档方式展现给用户看。
java实现文件下载
在java代码中实现文件的上传和下载,通过页面的file文件上传到java代码段,获取文件的大小和名字
主要为大家详细介绍了java利用oss实现下载功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
用JAVA语言实现的文件浏览器,类似于资源管理器的功能;
这是我使用java实现的linux和ftp服务器文件上传下载工具,需要电脑安装jdk8, 启动命令,java -jar linuxAndFtp.jar 启动成功后,浏览器访问:http://localhost:9999 服务器的账号密码通过服务器列表页面管理,添加的...
Java实现HTTP文件下载
Java实现文件下载,直接复制使用。代码清晰。
利用java图形化界面和网络编程相结合实现的--文件上传。 运行步骤: (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 ...
这是随手写的一个利用线程池下载文件的小玩具,如果刚学完线程池不知道怎么使用的,可以拿来借鉴一下,互相学习。里面或许有些代码不太合理,但是作为练手项目还是可以的。 适用人群: 刚学完多线程和线程池,以及...
用JAVA实现的文件上传,控制台输入,保存到数据库
使用Java实现对dbf文件的简单读写.
Java实现文件的RSA和DES加密 说明代码
2022年用Java实现HTTP文件队列下载Java教程.docx
用JAVA实现Ftp文件上传下载,提供实现方法和测试用例