为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
阿波罗的战车 2019-03-18 18:07:05
有个小项目,用的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; }
查看完整描述

4 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

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

查看完整回答
反对 回复 2019-03-18
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-03-18
?
www说

TA贡献1775条经验 获得超8个赞

  1. 可能你原来的图片格式就是有问题了。最好用PS等软件重新处理一下原图再导出一下。
  2. 文件名格式和真实的图片格式不一致,我一般都是用函数 getimagesize() 处理一下,根据返回的类型决定最终的文件扩展名。
查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 538 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信