2013-08-19 5 views
0

У меня есть сценарий загрузки в php, который принимает файл или несколько файлов и загружает их на мой сервер. Теперь я пытаюсь сжать изображение перед загрузкой, чтобы сэкономить время и пространство на сервере.PHP - move_uploaded_file после сжатия изображения

Как моя функция сжатия, так и функции загрузки работают самостоятельно, но я не могу объединить эти два.

Если я сделать загрузку без сжатия, как в:

if (move_uploaded_file($temp, "../images/" . $upload)){ 

он отлично работает, но он пытается переместить сжатое изображение не полный размер один, как здесь:

// compression 
    $compressed = compress_image($temp, $upload, 70); 
    // 

    if (move_uploaded_file($temp, "../images/" . $compressed)){ 

Full код ниже:

function getExtension($str) { 
    $ext = pathinfo($str, PATHINFO_EXTENSION); 
    return $ext; 
} 

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; 
} 


foreach ($_FILES["images"]["error"] as $key => $error) { 
    if ($error == UPLOAD_ERR_OK) { 

     $temp = $_FILES["images"]["tmp_name"][$key]; 
     $name = $_FILES["images"]["name"][$key]; 
     $extension = getExtension($name); 
     $extension = strtolower($extension); 
     $upload = $_POST['name'].'.'.$extension; 

     // compression 
     $compressed = compress_image($temp, $upload, 70); 
     // 

     if (move_uploaded_file($temp, "../images/" . $compressed)){ 
      echo "OK"; 
     } 
     else{ 
      echo "ERROR"; 
     } 
    } 
} 
+0

Вы возвращаете неправильную переменную. Вы также можете просто защитить свой сжатый файл без 'move_uploaded_file' – putvande

+0

, какую переменную я должен использовать? Я только что удалил файл move_uploaded_file и получил сжатый файл на сервере, я только что прочитал и услышал, что всегда безопасно использовать это при загрузке файлов в php? –

ответ

0

В документации указано, что.

Если имя файла не является допустимым загруженным файлом, то не будет происходить никаких действий, и move_uploaded_file() возвращает FALSE.

Я предполагаю, что он будет работать только в исходном файле загрузки. почему бы вам не сначала move_upload_file, а затем сделать компрессию.

+0

если я делаю компрессию после файла move_uploaded_file, то мне не нужно ждать полноразмерного изображения для загрузки в любом случае, поэтому нет реальной точки? –

Смежные вопросы