2024国产成人精品免费视频|日本免费一区二区三区毛片|久久97超碰色中文字幕|亚洲天堂a中文字幕

Discuz因圖片分辨率過高造成提示“沒有合法的文件被上傳”的解決方案

2015-12-29 14:36 欄目:技術(shù)開發(fā) 查看(11490)

用相機拍的照片的分辨率是特別高的,分辨率達到3000*5000px以上級別,這么高的圖片的品質(zhì)肯定是杠杠的,但在網(wǎng)頁上面來講確實太大了,因為我們普通的網(wǎng)頁也用不著展示這么高清這么大的圖片。我覺得原因有二:一是因為我們普通的網(wǎng)頁確實不需要這么大的;二是這么大的圖片通常有好幾兆甚至十幾兆大小,這樣頁面的加載速度回很慢的。

我們在Discuz中遇到一個問題,那就是上傳某些圖片的時候提示“沒有合法的文件被上傳”,而不是說您上傳的文件太大了。想到不合法通常會想到的是圖片的格式不對,不是普通的jpg或者png之類的,而是其他的非主流的圖片格式。但不管把這樣的圖片轉(zhuǎn)變成png還是jpg都不能上傳,但吧圖片一縮小卻是可以上傳的。這樣不就是因為文件大小的問題么?(越大一般來講文件體積也越大)。但檢查后發(fā)現(xiàn)文件體積并沒有超過網(wǎng)站限制以及對應(yīng)服務(wù)器的php配置。

sd

但當(dāng)我創(chuàng)建了一個5000*4000px空白圖片的時候卻不能上傳,而它的體積才645KB,遠遠低于限制的文件大小。于是開始分析源代碼了,結(jié)果分析到class文件中發(fā)現(xiàn)了一個discuz_upload類,就是實現(xiàn)該上傳功能。而在其中的get_image_info方法中我們似乎就發(fā)現(xiàn)了問題,代碼如下:

function get_image_info($target, $allowswf = false) {
    $ext = discuz_upload::fileext($target);
    $isimage = discuz_upload::is_image_ext($ext);
    if(!$isimage && ($ext != 'swf' || !$allowswf)) {
        return false;
    } elseif(!is_readable($target)) {
        return false;
    } elseif($imageinfo = @getimagesize($target)) {
        list($width, $height, $type) = !empty($imageinfo) ? $imageinfo : array('', '', '');
        $size = $width * $height;
        if($size > 16777216 || $size < 16 ) {
            return false;
        } elseif($ext == 'swf' && $type != 4 && $type != 13) {
            return false;
        } elseif($isimage && !in_array($type, array(1,2,3,6,13))) {
            return false;
        } elseif(!$allowswf && ($ext == 'swf' || $type == 4 || $type == 13)) {
            return false;
        }
        return $imageinfo;
    } else {
        return false;
    }
}

這個方法就是獲取圖片的信息,而返回的值就是真或者假,而為假的時候就提示非法,為真的時候驗證通過,上傳流程正常執(zhí)行。而其中就有一個$size變量,它的值是通過獲取圖片的長寬,然后長寬乘積得到,默認(rèn)是16777216,開根之后是4096,也就是超過4096*4096px的圖片就會之前的報錯。而開始的時候我們上傳的是5000*4000=2000000,這個值是大于設(shè)定的臨界的,于是就返回flase。

與我們的項目經(jīng)理聯(lián)系
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流

轉(zhuǎn)載請注明出處:Discuz因圖片分辨率過高造成提示“沒有合法的文件被上傳”的解決方案 - 微構(gòu)網(wǎng)絡(luò)
分享:
福鼎市| 安化县| 苗栗县| 平凉市| 霍林郭勒市| 青冈县| 沙田区| 苏尼特右旗| 华池县| 太原市| 松阳县| 鹤壁市| 祥云县| 额敏县| 安庆市| 清丰县| 城固县| 东乡| 介休市| 太康县| 甘孜县| 麻城市| 金溪县| 和顺县| 秭归县| 崇明县| 靖宇县| 丹寨县| 昌图县| 肃南| 景东| 于都县| 蒲江县| 临江市| 兴安盟| 柳江县| 怀柔区| 郯城县| 临武县| 河北省| 惠东县|