ecshop后台上传大于524288(512k)的图片上传失败问题

上传失败的时候 $_FILES['file']['type']是application/octet-stream 然后ecshop报图片类型不正确
后来做了一层简单的图片类型转换

if ($_FILES['file']['type'] == 'application/octet-stream') {
        $imagesize = getimagesize($_FILES['file']['tmp_name']);
        if ($imagesize['mime']) {
            $_FILES['file']['type'] = $imagesize['mime'];
        } else {
            if (isset($_POST['type'])) {
                $_FILES['file']['type'] = $_POST['type'];
            } else {
                $file_type = explode('.', $_FILES['file']['name']);
                $_FILES['file']['type'] = file_type_translate(end($file_type));
            }
        }
    }


/**
 * 通过图片文件后缀获取图片类型
 * @param   string  $file_type 图片文件后缀
 * @return  string
 */
function file_type_translate($file_type)
{
    switch ($file_type) {
        case 'jpg':
            return 'image/jpeg';
            break;

        case 'png':
            return 'image/png';
            break;

        case 'gif':
            return 'image/gif';
            break;
        
        default:
            return $file_type;
            break;
    }
}

发现JPG格式的图片可以上传了(其实JPG格式的并非真正完全上传成功 而是测试图片的文件大小大于512k较少 丢失内容并不多)  png的还是上传失败  
第二天又收到反馈 部分JPG格式的 上传后 下面一部分是灰色的  图片不完整丢失了一部分


然后具体看上传后有问题的图片  

2020-06-12T11:13:05+08:00	Array
(
    [file] => Array
        (
            [name] => 主图-4.jpg
            [type] => application/octet-stream
            [tmp_name] => /tmp/phpHZjB04
            [error] => 0
            [size] => 524288
        )

)

发现传过来的 $_FILES['file']['type']依然是application/octet-stream  size是524288 (524288/1024=512)
前一天有看到admin/js/diyUpload.js文件里的切片那块儿  由于要忙其它事情  jpg格式的可以上传 不影响使用 png格式也就暂时先不管了
// 开起分片上传。 thinkphp的上传类测试分片无效,图片丢失;
chunked:true,
// 分片大小
chunkSize:512 * 1024,

把admin/js/diyUpload.js文件里chunkSize:512 * 1024, 改为chunkSize:5120 * 1024,    或者chunked:true,改为chunked:false,
发现上传的图片完整的  png的大图也可以正常上传  切片调大   上传过来的$_FILES['file']['type']也是对应的image/jpeg或者image/png了

通过这个问题  也发现jpg格式的图片和png图片格式的存储方式是不一样的   jpg文件应该是从上到下存储图片内容的  可以丢失一部分  而png的就不行了 图片文件要完整  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章