一开始通过请求的方式写了个下载文件的工具代码,可以参考下面链接
https://blog.csdn.net/z2014ypd/article/details/88417757
这种方式在项目打包发布后,获取的文件是提示损坏,无法打开的,原因就是项目打包,不会将resources文件夹下面的资源一起打包,而且打包的时候maven会对文件进行压缩,这就导致请求响应访问错误,文件自然就是损坏的。
解决资源打包以及压缩问题,只需要在打包的pom里面增加配置

<build><plugins>//这个插件是为了防止打包的时候压缩xlsx类型的文件,记得放在项目启动的那个层级pom里面<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><configuration><encoding>UTF-8</encoding><nonFilteredFileExtensions><nonFilteredFileExtension>xlsx</nonFilteredFileExtension></nonFilteredFileExtensions></configuration></plugin></plugins><resources>//这个是资源文件配置信息,在启动时包含哪些文件,可以不用配置这个。若是无效再配置<resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.xml</include><include>**/*.properties</include><include>**/*.yml</include><include>**/*.html</include><include>**/*.xlsx</include></includes></resource></resources></build>

进行配置之后,就是使用文件流的方式读取文件,进行下载。因为Linux都是读取文件流,这个方式之外的都不行,都会乱码。参考工具代码如下:

public static void download(HttpServletResponse response, String filePath, String fileName){try {response.setHeader("content-type", "application/octet-stream");response.setContentType("application/octet-stream");response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName,"UTF-8"));InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(filePath);writeBytes(is, response.getOutputStream());}catch (Exception e) {e.printStackTrace();}}private static void writeBytes(InputStream is, OutputStream os) {try {byte[] buf = new byte[1024];int len = 0;while((len = is.read(buf))!=-1){os.write(buf,0,len);}}catch (Exception e) {e.printStackTrace();}finally {if(is != null) {try {is.close();} catch (IOException e) {e.printStackTrace();}}if(os != null) {try {os.close();} catch (IOException e) {e.printStackTrace();}}}}

这样操作之后,就可以打包,下载jar包内的文件到本地打开了

Java解决服务器下载excel文件提示损坏无法打开的问题相关推荐

  1. vue下载zip文件提示损坏

    vue下载zip文件提示损坏 问题代码 前端 export function exportCheckFile() {return request({url: '/exportCheckFile',me ...

  2. Excel文件已损坏无法打开

    Excel文件已损坏无法打开 解决方法 解决方案: 打开Excel, 文件→选项→信任中心,点击信任中心设置,然后受信任位置添加下你的文件所在文件夹即可

  3. 服务器上文件一直被打开吗,Python: 如何判断远程服务器上Excel文件是否被人打开...

    最近工作中需要去判断远程服务器上的某个Excel文件是否被打开,如果被人打开,则等待,如果没人打开使用,则去填写数据进Excel文件. 开始想的很简单,和其他语言一样,比如C#,打开文件,如果报错说明 ...

  4. python检测excel是否打开_Python判断远程服务器上Excel文件是否被人打开的方法_学领未来...

    最近工作中需要去判断远程服务器上的某个Excel文件是否被打开,如果被人打开,则等待,如果没人打开使用,则去填写数据进Excel文件. 开始想的很简单,和其他语言一样,比如C#,打开文件,如果报错说明 ...

  5. 解决浏览器下载excel文件时显示“文件已损坏”

    天天被学校的健康上报三个专业汇总搞得头大,一个班要截一个图,三个专业要十几个截图,一天三次,啊哈哈真是想快点毕业,其实健康系统上面有下载整个excel文件, but,每次点击导出之后,可以下载成功(我 ...

  6. java从服务器下载xls文件到客户端

    查考网上的代码写了一个下载xls文件到客户端的jsp页面,只要将服务器的文件地址传给这个jsp页面就可以实现下载文件到客户端了. Code: <%@ page language="ja ...

  7. linux服务器不允许下载文件,关于从Linux服务器下载Excel文件的问题

    本地下载文件可以,可是把代码放到Linux服务器下载下来的是jsp页面内容,下载的Excel文件中的内容则是jsp中展示的内容 相关代码 response.setCharacterEncoding(& ...

  8. Excel报:文件已损坏无法打开错误问题解决

    问题: 有些EXCEL文件总是无法打开,报"文件已损坏无法打开"错误,开始总以为是office坏掉了,可没有修改过office的程序或设置,且同源安装的其他同事的机器是好的,可以打 ...

  9. iOS 打开本地或下载excel文件

    打开本地或下载excel文件 1.用webView打开 - (UIWebView *)webView{if (!_webView) {_webView = [[UIWebView alloc] ini ...

最新文章

  1. wordpress如何禁用后台控制面板内容
  2. 图像旋转的MATLAB和OpenCV源码
  3. python django事务transaction源码分析
  4. Git和Repo管理使用简要介绍
  5. #279. [SYZOI Round1] 滑稽♂树(树状数组套主席树)
  6. memcached客户端(分布算法)
  7. 【java学习之路】(java框架)004.Mybatis SQL映射文件详解
  8. linux mysql 权限不够_linux提示权限不够怎么办
  9. 菜鸡小南橙的成长之路————bugkuCTF解题记录(一)
  10. 安装bugzilla
  11. 大型网站具备的9大特点
  12. 3dmax 计算机中丢失,3ds Max文件损坏或丢失怎么办?
  13. win8电脑打不开html文件,Win8网页打不开qq能上_Win8能上qq打不开网页怎么办?-192路由网...
  14. 策略模式——商品促销
  15. 2020年第二届“长安杯”电子数据取证竞赛--学习记录(参考官方复盘)
  16. 有关于论文投稿的问题
  17. 2计算机电源机,有人说电脑主机电源功率越大越好,2个知识告诉你这观点是片面的...
  18. IPFS存储一致性难题?IPFS-Cluster帮你解决
  19. lua --- 基本语法学习
  20. 【ARToolkit】关于如何制作标识卡patt

热门文章

  1. 如何建立一个 [FTP站点 or HTTP站点] 去实现资源共享
  2. 软件设计师(五)——软件工程基础知识
  3. 记录生活中的发现和感悟
  4. 5G网优工程师做了5年,我总结出了这3条避坑手册
  5. hellojs实现google+facebook登陆
  6. 孩子学计算机最佳年龄,孩子上兴趣班的最佳年龄汇总,看完你就知道了!
  7. CleanMyMac X2021中文官方永久免费全新系统清理管家软件
  8. C/S架构的性能测试
  9. [内核内存] [arm64] 内存规整1---memory-compaction详解
  10. AndroidMaterialDesign动画之Curved Motion