解決kkFileView預覽線上的office等文件時,報【連接url異常】錯-sunziren


  1.問題:  

    在本地預覽時,任何問題都沒有。但是程序部署到線上后,除了圖片可以正常預覽,其他的文件,例如:doc\docx\xls\xlsx\pdf等這些類型的時候,直接提示連接url異常。

  2.現象分析及思考

    但是文件的url是可以下載的,我把傳給預覽接口的參數,就是文件的鏈接,直接拿到瀏覽器訪問是可以正常下載的,但是為什么只有圖片可以預覽,其他文件卻不行?

    經過我的檢查,所有文件都是在線上存在同一個ftp文件夾里的,所以應該是線上環境限制了可以讀取的文件類型,但是我找了半天,並沒有找到在什么地方有這么個限制的配置。

    我想看看這個錯是怎么報出來的,是哪一行代碼出了問題。我根據提示的關鍵字,先把kkFileView這個項目下載到了本地(版本: 2.2.1),然后全局查找關鍵字【連接url異常】,終於找到了。

    

     就是這個DownloadUtils中的getInputStreamFromUrl方法報出來的,如下:

private InputStream getInputStreamFromUrl(String urlStr) {
        try {
            URL url = new URL(urlStr);
            URLConnection connection = url.openConnection();
            if (connection instanceof HttpURLConnection) {
                connection.setRequestProperty("Accept", "*/*");
                connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)");
            }
            return connection.getInputStream();
        } catch (IOException e) {
            logger.warn("連接url異常:url:{}", urlStr);
            return null;
        }
    }

       我想看看網上其他人有沒有碰到類似問題,一位名叫的兄弟於2019-02-18 15:19:37發布的帖子,引起了我注意:

      關於Server returned HTTP response code: 403 for URL

  3.解決

    我根據他的修改方式,把代碼中的setRequesetProperty進行了更改,上面的方法變成了下面這樣:

private InputStream getInputStreamFromUrl(String urlStr) {
        try {
            URL url = new URL(urlStr);
            URLConnection connection = url.openConnection();
            if (connection instanceof HttpURLConnection) {
                connection.setRequestProperty("Accept", "*/*");
                connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36)");
            }
            return connection.getInputStream();
        } catch (IOException e) {
            logger.warn("連接url異常:url:{}", urlStr);
            return null;
        }
    }
    然后問題就解決了,office文件也可以正常預覽了。
    哈哈。
    最后,十分感謝這位兄弟的帖子。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM