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

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

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

瀏覽:64日期: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
主站蜘蛛池模板: 甘泉县| 安阳市| 建昌县| 曲阳县| 交城县| 涪陵区| 龙泉市| 佛冈县| 楚雄市| 鲁山县| 闸北区| 富裕县| 红原县| 长春市| 盐池县| 阿克陶县| 青铜峡市| 泰兴市| 漳浦县| 罗甸县| 紫云| 新泰市| 邛崃市| 金沙县| 长宁县| 河南省| 南漳县| 博白县| 莒南县| 绿春县| 镇巴县| 阿图什市| 乾安县| 娄底市| 铁岭县| 句容市| 茶陵县| 麻城市| 湘西| 嘉鱼县| 新田县|