方法一: /** * 下载附件 * @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(); } } }
相关推荐
在现代Web应用中,用户对交互性和...总结起来,Ajax实现Java文件下载是一种提高用户体验的有效手段,通过前后端的协同工作,实现了无刷新的文件下载功能。理解并掌握这一技术,对于提升Web应用的交互性具有重要意义。
本教程将详细讲解如何使用Itext库实现PDF文件的下载,包括通过系统路径下载和通过浏览器下载两种方式。 首先,我们需要了解Itext的基本用法。Itext提供了一系列的API,可以方便地创建PDF文档的各个元素,如文本、...
Java是当前最流行的编程语言之一,而 OSS(Object Storage Service)是阿里云提供的一种对象存储服务,通过使用Java和OSS可以实现下载功能。本文将详细介绍如何使用Java和OSS实现下载功能。 Java下载功能的实现有...
这项功能可以让用户无需下载原始文件就能查看文档内容,提高工作效率并减少服务器存储压力。本资源提供的代码和jar包正是为了解决这一问题。 首先,我们要理解Java实现Word在线预览的基本原理。这通常涉及到将Word...
通过上述步骤和代码示例,我们可以清晰地了解到如何使用Java实现文件下载功能。这种能力对于构建功能丰富的Web应用程序至关重要,尤其是在需要提供文档、图片、视频等多媒体资源下载的情况下。掌握这些技术细节,将...
### Java 实现模板下载功能详解 #### 一、概述 在Web应用开发中,模板下载功能是常见需求之一,尤其在报表系统、数据导出等场景下应用广泛。本篇文章将详细阐述如何利用Java技术栈实现一个简单的模板下载功能。 #...
这里我们将深入探讨这些功能的实现,并结合标签`java xpdf java实现pdf`来讨论XPDF库在Java中的应用。 1. **PDF上传**: PDF上传通常涉及用户通过Web界面或API接口提交PDF文件。Java中,可以使用Apache Commons ...
Java中的批量下载是指通过Java程序实现多个文件的压缩和下载,今天我们将讨论如何使用Java实现批量下载,并将其压缩为zip包。 标题解释 标题“Java实现批量下载”表明了本节的主题,即使用Java语言实现批量下载...
这是我使用java实现的linux和ftp服务器文件上传下载工具,需要电脑安装jdk8, 启动命令,java -jar linuxAndFtp.jar 启动成功后,浏览器访问:http://localhost:9999 服务器的账号密码通过服务器列表页面管理,添加的...
以上是Java实现文件下载的基本步骤和注意事项。在提供的"Java实现HTTP文件下载_(转载).txt"文件中,可能包含了具体的示例代码或进一步的解释。通过阅读和理解这份文档,开发者可以更好地掌握Java文件下载的实现技巧...
本文将深入探讨如何使用JAVA实现扫描二维码自动下载对应客户端类型的APP功能。 首先,我们需要理解二维码的基本原理。二维码(Quick Response Code)是一种二维条形码,存储的数据可以是网址、文字、图片、联系人...
在java代码中实现文件的上传和下载,通过页面的file文件上传到java代码段,获取文件的大小和名字
Java 实现文件的 RSA 和 DES 加密 在现代密码技术中,根据密钥类型的不同,可以将其分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对称加密算法用来对敏感数据等信息进行加密,常用的...
本人用JAVA写的一个BT下载客户端 是本人的毕业设计 界面用SWT实现 后台引用了国外著名的Vuze开源软件的后台 能实现下载上传,种子的解析和生成 软件的功能不是很全 但是本人一手摸索着写成的东西 费了不少心思 是...
2. 文件下载(File Download) 3. 文件读取(File Reading) 4、优点: 封装性:工具类封装了NFS相关的复杂连接、认证和I/O操作细节,使得业务层代码无需关心底层通信协议,只需通过简单API即可操作远程文件。 可...
Java实现FTP批量大文件上传下载需要选择合适的FTP客户端库,例如J-FTP,并使用Java Applet实现基于Web的FTP客户端。需要考虑安全性问题,例如数字签名、数据加密等。同时,需要选择合适的FTP服务器端程序,例如Serv-...
在`easyfile`这个压缩包文件中,可能包含了一个简单的Java实现,展示了如何进行上述步骤。通过阅读和理解代码,你可以更深入地了解FTP文件下载的实现细节。记住,实践是学习的最佳途径,尝试自己动手编写代码并运行...
本文介绍了如何使用 Java 实现 FTP 服务器上的大批量文件的上传和下载,处理大文件的上传和下载。通过 Java 现有的可用的库来编写 FTP 客户端代码,并开发成 Applet 控件,做成基于 Web 的批量、大文件的上传下载...
本文将深入探讨如何使用Java实现文件下载,并在客户端弹出保存对话框,特别聚焦于Excel文件的处理,这在企业级应用中尤为常见。 ### Java实现文件下载的关键步骤 1. **设置HTTP响应头**:为了触发浏览器的下载行为...
利用java图形化界面和网络编程相结合实现的--文件上传。 运行步骤: (1)分别运行工程两个包中的两个.java文件(UploadClient.java和UploadServer.java)分别会弹出“上传客服端”和“上传服务器”两个窗口。 ...