国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

Java程序部署到服務器上,接口請求下載文件失敗/文件為空/文件名不對的問題

瀏覽:36日期:2022-08-29 14:21:59

1.問題:

昨天把項目打包放到國產中間件東方通(外部容器,功能類似Tomcat)上時,發現某些請求下載文件的接口不能正確返回文件,而是返回一個空的文件,名稱是接口名最后一個詞fj,

然而這個功能直接使用IDE啟動時沒問題的,打包放到Tomcat9上也沒問題,那可能是東方通適配問題了

Java程序部署到服務器上,接口請求下載文件失敗/文件為空/文件名不對的問題

2.原代碼:

部署在服務器上系統以后,在線打斷點,發現跑到這一部分就在第三行位置執行不下去

response.setContentType('application/force-download'); response.setCharacterEncoding('utf-8'); response.setContentLengthLong(fileMetaData.getSize()); response.setHeader('Content-Disposition', 'attachment;filename=' + encodeChineseDownloadFileName(request, qualifiedFileName));

3.錯誤原因:

servlet-api.jar 版本問題,系統使用了新版本的方法,東方通上舊版本jar沒這個方法

4.解決

response是HttpServletResponse類型的,看一下這個類在哪:javaxservletjavax.servlet-api4.0.1javax.servlet-api-4.0.1.jar!javaxservlethttpHttpServletResponse.class

發現這個類是javax.servlet-api-4.0.1.jar包里的類

我在遷移系統到TongWeb上的時候,做了一些jar包改動,依稀記得看到過lib下使用的是servlet-api.jar

我把jar下下來,壓縮文件打開,去尋找此類,發現這些文件都是2012年的,說明這版東方通使用的servlet-api版本老

Java程序部署到服務器上,接口請求下載文件失敗/文件為空/文件名不對的問題

使用IDEA打開class,在structure中查看,發現我們代碼中用到的方法只有setHeader

Java程序部署到服務器上,接口請求下載文件失敗/文件為空/文件名不對的問題

再看一下集成的接口ServletResponse,發現只找到setContentType、setCharacterEncoding

Java程序部署到服務器上,接口請求下載文件失敗/文件為空/文件名不對的問題

看一下程序依賴的版本,好吧,新版本有這個方法

Java程序部署到服務器上,接口請求下載文件失敗/文件為空/文件名不對的問題

5.新代碼:

去掉這一行,接口返回正確的文件

response.setContentType('application/force-download'); response.setCharacterEncoding('utf-8'); //response.setContentLengthLong(fileMetaData.getSize()); response.setHeader('Content-Disposition', 'attachment;filename=' + encodeChineseDownloadFileName(request, qualifiedFileName));

到此這篇關于Java程序部署到服務器上,接口請求下載文件失敗/文件為空/文件名不對的文章就介紹到這了,更多相關java程序部署服務器內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
主站蜘蛛池模板: 肥西县| 嘉祥县| 和静县| 裕民县| 报价| 龙山县| 铜梁县| 潮安县| 南宁市| 临沧市| 雷州市| 讷河市| 合阳县| 辽阳市| 中宁县| 阿克| 正蓝旗| 仪征市| 宁强县| 石门县| 方山县| 卢湾区| 革吉县| 广昌县| 平乡县| 赞皇县| 密山市| 永嘉县| 长兴县| 塔河县| 雅江县| 罗源县| 濮阳县| 岳阳市| 江安县| 大方县| 锡林郭勒盟| 宜阳县| 新巴尔虎左旗| 绥棱县| 肥西县|