zoukankan      html  css  js  c++  java
  • 解决kkFileView预览线上的office等文件时,报【连接url异常】错-sunziren

      1.问题:  

        在本地预览时,任何问题都没有。但是程序部署到线上后,除了图片可以正常预览,其他的文件,例如:docdocxxlsxlsxpdf等这些类型的时候,直接提示连接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文件也可以正常预览了。
        哈哈。
        最后,十分感谢这位兄弟的帖子。
  • 相关阅读:
    趣味算法:国王和100个囚犯(据说是腾讯的面试题)
    限制文本框的输入(兼容FF,IE)
    切换家里和公司网络的脚本
    onchange,onpropertychange,oninput的使用
    正则匹配html标记
    javascript清空数组的三种方法
    正则查找重复
    (正则)提取页面里的img标签
    javascript类型检测(转载)
    查看sqlserver信息
  • 原文地址:https://www.cnblogs.com/sunziren/p/14192676.html
Copyright © 2011-2022 走看看