<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【解決】spring boot項(xiàng)目在Linux系統(tǒng)中,上傳文件提示 is not valid解決方案

          共 1541字,需瀏覽 4分鐘

           ·

          2021-07-17 11:39

          今天突然收到錯(cuò)誤反饋文件上傳失敗了。錯(cuò)誤如下圖:

          Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.2108414996593143912.8080/work/Tomcat/localhost/ROOT] is not valid

          這個(gè)問題之前沒遇到過啊。然后BXX后,網(wǎng)上還真有人遇到。原因分析:

          原因:在linux系統(tǒng)中,springboot應(yīng)用服務(wù)再啟動(java -jar 命令啟動服務(wù))的時(shí)候,會在操作系統(tǒng)的/tmp目錄下生成一個(gè)tomcat*的文件目錄,上傳的文件先要轉(zhuǎn)換成臨時(shí)文件保存在這個(gè)文件夾下面。由于臨時(shí)/tmp目錄下的文件,在長時(shí)間(10天)沒有使用的情況下,就會被系統(tǒng)機(jī)制自動刪除掉。所以如果系統(tǒng)長時(shí)間無人問津的話,就可能導(dǎo)致上面這個(gè)問題。

          是因?yàn)長inux自己處理的原因。

          感謝:https://blog.csdn.net/weixin_42399503/article/details/94009802

          解決方案一,修改Liunx配置:

          這個(gè)方案,是需要修改系統(tǒng)配置。算了,還是放棄吧。萬一修改錯(cuò)誤,引發(fā)其他血案就不好玩了。

          解決方案二:

          萬能的重啟大法。重啟自己的服務(wù)。雖然能臨時(shí)解決,但是不能從根本上解決啊。

          所以,這個(gè)方案,放棄。

          解決方案三:

          1.如果不是很重要的接口,請求方式可以換成get,就不會出現(xiàn)錯(cuò)誤

          2.post請求,用json傳參(application/json)也行,不是multipart/form-data就行

          3.在配置文件中加入這個(gè) server.tomcat.basedir=/XXX/XXX/XXX(自定義目錄-網(wǎng)上看到的,驗(yàn)證了下啟動時(shí)會自動創(chuàng)建該目錄/XXX/XXX/XXX/work/Tomcat/localhost/ROOT)

          比如凱哥的:

          以下是我跟蹤的過程,除了以上解決方式你也可以自己考慮考慮看看


          開發(fā)環(huán)境復(fù)現(xiàn)跟蹤

          咱可以在開發(fā)環(huán)境下debug跟蹤問題原因呀,首先我想到的是在DispatcherServlet 的doService(…)方法下看看request.getParts()的路徑發(fā)現(xiàn)是C:\Users\user\AppData\Local\Temp\tomcat.4632713886902697899.8080\work\Tomcat\localhost\ROOT,然后把目錄刪掉,再進(jìn)doService(…)方法看,結(jié)果發(fā)現(xiàn)已經(jīng)拋出異常了,那這個(gè)好說,一層層往上找,最后在ApplicationFilterChain(應(yīng)用攔截鏈)的internalDoFilter(內(nèi)部過濾器)方法中,當(dāng)執(zhí)行完過濾器HiddenHttpMethodFilter(隱藏Http請求方法過濾器)時(shí),發(fā)現(xiàn)又報(bào)錯(cuò)了,那咱就鎖定HiddenHttpMethodFilter了,首先發(fā)現(xiàn)請求必須為post方式并且沒有異常才會發(fā)生上面那錯(cuò),

          然后一步步跟下去,又發(fā)現(xiàn)請求的contentType值必須為multipart/form-data才會進(jìn)入記錄異常代碼中,

          那咱再繼續(xù)往下看,就可以看到獲取目錄的地方,它將臨時(shí)目錄強(qiáng)轉(zhuǎn)為文件,并且判斷這個(gè)文件是否為一個(gè)目錄,如果不是,就會捕獲上面的異常,在后續(xù)拋出。




          瀏覽 172
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产视频色色色 | 色播播五月天 | 中文字幕AV在线观看 | 葵司视频在线观看 | 成人国产精品蜜臀 |