PHP上传图片后有部分不能正常显示如何解决?

有个小项目,用的ECSHOP的框架,正常图片在用ECSHOP上传图片类后,偶尔会有图片显示错位、断图、部分颗粒显示的问题,请问这种结果是图片自身的问题还是其他的什么问题?
以下提供下ECSHOP的上传图片代码:
以免代码太长,upload_image方法的验证跟路径创建就没放上来

/**
 * 图片上传的处理函数
 *
 * @access      public
 * @param       array       upload       包含上传的图片文件信息的数组
 * @param       array       dir          文件要上传在$this->data_dir下的目录名。如果为空图片放在则在$this->images_dir下以当月命名的目录下
 * @param       array       img_name     上传图片名称,为空则随机生成
 * @return      mix         如果成功则返回文件名,否则返回false
 */
    function upload_image($upload, $dir = '', $img_name = '') {
    if ($this->move_file($upload, $img_name))
    {
        return str_replace(ROOT_PATH, '', $img_name);
    }
    else {
        $this->error_msg = sprintf($GLOBALS['_LANG']['upload_failure'], $upload['name']);
        $this->error_no  = ERR_UPLOAD_FAILURE;
        return false;
    }
}

/**
 * @access  public
 * @param
 *
 * @return void
 */
function move_file($upload, $target)
{
    if (isset($upload['error']) && $upload['error'] > 0) {
        return false;
    }
    if (!move_upload_file($upload['tmp_name'], $target)) {
        return false;
    }
    return true;
}

/**
 * 将上传文件转移到指定位置
 *
 * @param string $file_name
 * @param string $target_name
 * @return blog
 */
function move_upload_file($file_name, $target_name = '')
{
    if (function_exists("move_uploaded_file"))
    {
        if (move_uploaded_file($file_name, $target_name))
        {
            @chmod($target_name,0755);
            return true;
        }
        else if (copy($file_name, $target_name))
        {
            @chmod($target_name,0755);
            return true;
        }
    }
    elseif (copy($file_name, $target_name))
    {
        @chmod($target_name,0755);
        return true;
    }
    return false;
}

https://img.mukewang.com/5c8f6dc80001423804500800.jpg

阿波罗的战车
浏览 539回答 4
4回答

慕后森

只要是正确上传了图片,其余的都是图片大小和排版问题

海绵宝宝撒

如果你上传的是jpg格式图片的话,可以fread一下文件流,看一下开头和结尾是不是FFD8和FFD9,jpg图片开头和结尾标准格式,如果不是,就是图片损坏了,重新上传,频繁出现图片上传问题,有可能是网络不好,应该跟代码没啥关系,看看丢包情况啥的。

www说

可能你原来的图片格式就是有问题了。最好用PS等软件重新处理一下原图再导出一下。 文件名格式和真实的图片格式不一致,我一般都是用函数 getimagesize() 处理一下,根据返回的类型决定最终的文件扩展名。
打开App,查看更多内容
随时随地看视频慕课网APP