2013-10-09 26 views
0

我上傳用戶的圖像與,然後一旦全尺寸圖像上傳完成,我做一個壓縮副本作爲縮略圖使用顯示。所有工作正常,除非我嘗試上傳大於13-14MB的文件。對於大於此的文件,原始的全尺寸文件將進入服務器,但不會創建縮略圖。PHP - 上傳後無法保存14mb加上文件的壓縮圖像

我的上傳和壓縮代碼:

function compress_image($source_url, $destination_url, $quality) { 
    $info = getimagesize($source_url); 
    if ($info['mime'] == 'image/jpeg'){$image = imagecreatefromjpeg($source_url);} 
    else if ($info['mime'] == 'image/gif'){$image = imagecreatefromgif($source_url);} 
    else if ($info['mime'] == 'image/png'){$image = imagecreatefrompng($source_url);} 
    imagejpeg($image, $destination_url, $quality); 
    return $destination_url; 
} 


if(isset($_POST['folder'])){ 
    $filename = $_SERVER['HTTP_X_FILE_NAME']; 
    $final_img = $_SESSION['dir']."/".$_SESSION['folder']."/".$filename; 

    // UPLOAD FULL IMAGE 
    if (file_put_contents($final_img, file_get_contents('php://input'))){ 

    // CREATE COMPRESSED THUMBNAIL 
    if(compress_image($final_img, $_SESSION['dir']."/".$_SESSION['folder']."/thumbs/".$filename, 50)){ 
     // continue 
    } 
    else{ 
     // error 
    } 

} 
else { 
    // no post 
} 

我本來以爲是由於後或內存限制,所以我嘗試了好幾種配置,甚至可以達到我的php.ini文件中的以下(和有使用phpinfo()檢查了這些值,它們被更新),但是再次沒有運氣。

post_max_size = 1G 
upload_max_filesize = 1G 
memory_limit = 1G 

回答

0

全部整理,似乎並沒有在子目錄,這是正在使用的根php.ini文件通過自身設置它們在文件中,如下現在它工作:

ini_set('memory_limit','1G'); 
ini_set('post_max_size','1G'); 
ini_set('upload_max_filesize','1G'); 
+0

錯誤這是安靜的危險,好像用戶試圖上傳一個巨大的圖像,你的服務器將不會很高興,壓縮可能會失敗。也許你應該定義一個較低的上傳文件大小。 – COil

+0

嘿,對不起,我應該澄清 - 我只是使用這些大的值來表明它不工作 - 我現在在我的實際php文件中使用較低的值 –