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的就不行了 圖片文件要完整  

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