`
cfyme
  • 浏览: 273617 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一个隐蔽的错误导致上传图片报错

 
阅读更多

记录下这一个坑:

 

rose后台管理系统突然上传不了图片

 

前几天都是好好的,为什么突然就不行了呢?

 

下面是服务日志保存信息:


 

这张图片是可以正常打开的,

 

测试环境都是可以正常上传图片的,难道是服务器不能打开这张图片。

 

登陆到服务器运行:

 

curl http://img03.taobaocdn.com/imgextra/i4/138216051/TB2PioecpXXXXXZXpXXXXXXXXXX_!!138216051.png

 

是有信息可以打印出来的,说明服务器是可以访问该图片的。

 

一时办法也想不到解决方案

 

看代码好像也找不到什么BUG.

 

为了最快给运营人员使用, 那就去重启下tomcat看看有没有效果吧,服务器去运行下重启的命令:

 sudo service tomcat_rose restart
重启完成后,可以正常上传图片了
重启就能解决问题,这么奇怪的问题,那就仔细去查看下代码,因为是后台系统运行了一段时间才出现的问题,怀疑是不是什么流没有关闭,仔细查看,果然如此,是关闭流的地方代码写错了,原来的代码如下:
 
 public static BufferedImage getBufferedImage(String imgUrl) throws Exception {
        URL url = null;
        InputStream is = null;
        BufferedImage img = null;
        try {
            url = new URL(imgUrl);
            is = url.openStream();
            img = ImageIO.read(is);
        } catch (Exception e) {
            throw new Exception("图片不存在 url=" + imgUrl);
        } finally {
            try {
                if (null != is) {
                    is.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return img;
    }
 
原来关闭流的判断 写错了 (null != img)  正确的应该是 (null! = is)
这个错误好隐蔽,线上只有运行一段时间才会有问题。
总结:遇到问题,一时找不到办法,重启也许是一大法宝。然后逐步排查问题,才能高效率的解决各种意想不到的bug
 

 

 

  • 大小: 241.5 KB
分享到:
评论

相关推荐

    nginx上传文件大小报错500的解决办法

    采用nginx作反向代理,出现了一个诡异的问题,小文件可以提交,大文件会报500内部错误。这个是什么原因导致的呢?  查wiki可知,上传文件大小相关的有三个配置 client_body_buffer_size 配置请求体缓存区大小, ...

    FTP报错错误问题

    该错误通常发生在试图上传一个空文件或非常小的文件时,由于数据流问题导致客户端软件错误地报告了上传失败。实际上,文件可能已经被成功上传到了服务器。 **解决方法**: 1. **检查文件内容**:确保要上传的文件...

    UEditor(五)——解决上传图片时报错:未找到上传数据

    在使用UEditor这款强大的富文本编辑器时,可能会遇到上传图片时报错“未找到上传数据”的问题。这个错误通常是因为服务器端的配置不正确或与客户端的交互存在误解导致的。UEditor是一款由百度开发的JavaScript富文本...

    IE报错修复插件

    在Web开发过程中,Internet Explorer(简称IE)作为一个历史悠久的浏览器,时常会遇到一些特有的兼容性问题。"IE报错修复插件"就是专为解决此类问题而设计的工具,它能帮助开发者和用户解决在使用IE浏览器时遇到的...

    FineReport常见的数据集报错错误代码和解释

    ### FineReport常见数据集报错错误代码与解释 在日常工作中使用FineReport进行报表开发时,难免会遇到各种各样的错误提示。理解这些错误代码及其含义对于快速定位问题、解决问题至关重要。下面,我们将详细介绍一...

    Java程序调试与错误收集--代码引起的报错

    ### Java程序调试与错误收集——代码引起的报错 在Java开发过程中,经常会出现各种各样的错误,这些错误可能来源于语法、逻辑或者配置等方面。对于初级程序员来说,掌握基本的调试技巧和错误处理方法是非常重要的。...

    NCL报错处理.rar

    NCL的语法相对严格,一个小的语法错误就可能导致整个脚本无法运行。例如,括号不匹配、变量未声明或者函数调用错误等都可能导致报错。用户在调试过程中,应仔细检查代码的每一部分,确保语法的准确性。 此外,NCL中...

    柯达800报错信息一览表

    - **解决方案**: 检查固件的状态,并确保只在一个合适的时间点启动下载流程。 - **3325 BFD:Binaryfiledownloadnotcomplete** - **描述**: 二进制文件下载未完成。 - **解决方案**: 检查网络连接和服务器响应,...

    java apache common-io上传大文件报错

    3. **性能问题**:频繁地读写磁盘会比在内存中操作慢得多,这可能导致上传速度变慢,尤其是在并发上传多大文件的情况下。 4. **配置不当**:`DiskFileItemFactory`类是用来配置`DiskFileItem`的行为,如临时目录、...

    Canvas引入跨域的图片导致toDataURL()报错的问题的解决

    总之,解决Canvas因跨域图片导致的`toDataURL()`报错问题,关键在于两个步骤:一是前端设置图片的`crossOrigin`属性为`anonymous`,二是服务器端配置CORS策略,允许指定的源访问图片。这样做不仅可以解决安全问题,...

    WEB开发中错误信息大全

    在WEB开发过程中,错误信息是开发者经常会遇到的问题..."WEB开发中错误信息大全"这个资源可能包含了各种常见错误的详细解释和解决方案,对开发者来说是一份非常实用的参考资料,可以快速定位并解决问题,提高开发效率。

    app报错机制.xlsx.zip

    一个完善的app报错机制能够捕获这些错误,记录关键信息,并在必要时向开发者反馈,以便及时修复问题。这种机制通常包括错误捕获、错误日志记录、错误分类和错误报告四个主要部分。 **错误捕获**:这是报错机制的第...

    上传war文件大小超过Tomcat7最大文件限制报错

    例如,在尝试通过Tomcat 7的manager应用部署一个大约65MB大小的WAR包时,如果该服务器默认设置未进行调整,则可能会遇到以下错误: ``` org.apache.tomcat.util.http.fileupload.FileUploadBase$...

    解决BugFree上传图片不能显示问题

    你可以考虑编写一个脚本自动更新已上传图片的链接,或者在BugFree的后台设置中寻找批量修改的选项。 - **避免端口冲突**:尽量选择非标准端口以避免与其他服务冲突,同时确保所有团队成员都知道这个新的端口号。 -...

    小程序-url引入背景图片写在样式处会报错,写在行内不包错.zip

    这里,`yourImageSrc`应该是一个包含图片URL的变量,这个URL可以是在小程序JSON配置文件中定义的全局资源,或者在JS文件中动态获取的。 - **wxss预处理器**:如果非要使用外部CSS文件,可以使用小程序提供的wxss...

    详解Vue项目在其他电脑npm run dev运行报错的解决方法

    首先,当我们在另一台电脑上通过git clone命令获取了Vue项目源码后,运行npm run dev命令可能会遇到依赖缺失的错误提示。这通常是因为该项目的node_modules目录并没有被上传到版本控制系统中,因此需要在新电脑上...

    MTK报错集锦1

    - 如果函数定义位于另一个文件(例如`Drv_lcd.c`),则需确保该文件也被编译并链接到目标中。 - 删除已存在的`.obj`文件,强制重新编译。 #### 2. 修改.mak文件后的处理 - **问题描述**: - 在修改了`.mak`文件...

    Ueditor上传图片+图片回显+图片在线管理配置说明

    ### 一、上传图片配置 在 Ueditor 中,图片上传功能首先需要在 `ueditor.config.js` 配置文件中进行设置。`POI` 应替换为你的项目名称,`ueditor` 是 Ueditor 插件所在的文件夹。配置大致如下: ```javascript var...

    linux 国内镜像源配置以及报错解决的方法

    Kali Linux是一个基于Debian的Linux发行版,它专注于安全审计和渗透测试等任务。配置步骤包括: 1. 进入root用户模式。这通常需要使用“sudo”命令来获取超级用户权限。 2. 编辑软件源配置文件。文件路径为`/etc/...

Global site tag (gtag.js) - Google Analytics