前言:先说下需求,项目需求是用户一点击一个前端页面的链接就可以下载一个压缩包.因为就1个文件,使用文件管理系统像fastDSF,阿里云的OSS这种没必要,直接放在nginx服务器上的怕不好管理,于是给我限定了把文件打包到部署时候的jar包中并实现浏览器下载.
1.首先是建立一个文件夹存放需要打包的文件,这里我选择的是和src同路径创建一个files,把文件放入文件夹内. 2.修改pom.xml配置,实现打包时将文件打包到\target\classes\这个目录下,
<!--pom.xml里直接添加这段就可以把文件打包到\target\classes\目录了,代码能看懂把,要学会灵活运用,里面几个参数根据需要自己改--> <resources> <resource> <directory>files</directory> <includes> <include>/*.zip</include> </includes> <filtering>false</filtering> </resource> </resources>打包后效果 3.接下来就是功能实现,很简单,在controller里面实现即可
@GetMapping("download-template") public Result downloadTemplate(HttpServletResponse response) throws IOException { ApplicationHome ah = new ApplicationHome(getClass()); File files = ah.getSource();//这里获取到的是\target\classes\路径创建的File File file=new File(files,"导入模板.zip");//这里就是文件的绝对路径创建的File System.out.println(file.getParentFile().toString()); response.setContentType("application/msword");//msword可以随便设置,别和当前项目别的下载冲突接口 response.setCharacterEncoding("UTF-8"); String encode = URLEncoder.encode("导入模板", "UTF-8");//这是文件名,这样处理是解决乱码 response.addHeader("Content-Disposition", "attachment;filename=\"" + encode +".zip" +"\""); response.flushBuffer(); OutputStream outputStream = response.getOutputStream(); //输出文件 InputStream inputStream = new FileInputStream(file); IOUtils.copy(inputStream, outputStream); //关闭流 IOUtils.closeQuietly(inputStream); IOUtils.closeQuietly(outputStream); return Result.success("下载成功"); }最后:如果对你有帮助,可以随手点个赞哈,让我看到,我就有动力写的详细点,要不我就直接复制代码做个记录留我自己看就行了哈. 传送门,这里有关于创建临时文件,代码写入修改临时文件内容,最终把临时文件浏览器下载的写法,感兴趣的可以点击这里链接: Aspose.Words for Java实现Word的操作(创建,合并单元格,样式修改,动态插入数据)并浏览器下载或本地导出.