1. 程式人生 > 其它 >生成驗證碼時,驗證碼圖片不顯示,錯誤資訊如下,javax.imageio.IIOException: Can‘t create output stream! javax.imageio.IIOException: Can't create cache file!

生成驗證碼時,驗證碼圖片不顯示,錯誤資訊如下,javax.imageio.IIOException: Can‘t create output stream! javax.imageio.IIOException: Can't create cache file!

登入驗證時,驗證碼不顯示,解決辦法如下:

今天寫了一個簡單的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預設就是使用的快取目錄,所以這裡需要使用上面程式碼來更改快取策略

我的程式碼如圖:



更改後的結果如下:

希望對你有幫助,加油騷年!