生成驗證碼時,驗證碼圖片不顯示,錯誤資訊如下,javax.imageio.IIOException: Can‘t create output stream! javax.imageio.IIOException: Can't create cache file!
阿新 • • 發佈:2022-03-28
登入驗證時,驗證碼不顯示,解決辦法如下:
今天寫了一個簡單的demo,測試使用驗證碼登入驗證,遇到了一個問題,驗證碼不顯示,瀏覽器顯示頁面如下(簡單測試,頁面就隨便寫了一個)
瀏覽器顯示介面如下(驗證碼無法顯示):
報錯資訊如下:
錯誤日誌1:
錯誤日誌2:
錯誤日誌3:
錯誤總結下來大概就是下面三個:
- Can't create output stream!(沒有辦法建立輸出流)
- Can't create cache file!(沒有辦法建立緩衝檔案)
- D:\Program Files\Apache\apache-tomcat-8.5.27\temp\imageio5481273428871630221.tmp(沒有辦法在D:\Program Files\Apache\apache-tomcat-8.5.27\temp資料夾下面生成imageio5481273428871630221.tmp)
一般碰到 Can't create output stream!的問題,看看下面兩種情況:
(1)檢視我們的tomcat下面沒有temp資料夾,因為ImageIO預設使用的快取目錄是tomcat資料夾下面的temp資料夾。
(2)如果有這個資料夾還是無法生成快取檔案,那麼大概率可能是沒有沒有管理員許可權造成的無法快取,D盤需要管理員許可權才能建立資料夾。
對應的解決方案:
(1)手動在tomcat資料夾下建立一個temp資料夾,然後重啟Tomcat伺服器(預設快取就存放在temp資料夾下下,沒有固然會報錯)
(2) 在生成驗證碼的程式碼中加入如下程式碼:ImageIO.setUseCache(false);//不使用檔案目錄快取,使用記憶體快取
注意:ImageIO預設就是使用的快取目錄,所以這裡需要使用上面程式碼來更改快取策略
我的程式碼如圖:
更改後的結果如下:
希望對你有幫助,加油騷年!