有个小项目,用的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贡献1809条经验 获得超8个赞
如果你上传的是jpg格式图片的话,可以fread一下文件流,看一下开头和结尾是不是FFD8和FFD9,jpg图片开头和结尾标准格式,如果不是,就是图片损坏了,重新上传,频繁出现图片上传问题,有可能是网络不好,应该跟代码没啥关系,看看丢包情况啥的。
www说
TA贡献1775条经验 获得超8个赞
- 可能你原来的图片格式就是有问题了。最好用PS等软件重新处理一下原图再导出一下。
- 文件名格式和真实的图片格式不一致,我一般都是用函数 getimagesize() 处理一下,根据返回的类型决定最终的文件扩展名。
- 4 回答
- 0 关注
- 538 浏览
添加回答
举报
0/150
提交
取消