2016-06-07 2 views
1

나는 Ajax 호출로 사진을 업로드하는 PHP 스크립트를 가지고 있는데, 나는 표준 크기와 다른 크기로 두 번 사진을 업로드하고 싶다. 누구든지이 다음 코드를 사용하여이를 수행하는 방법을 알고 있습니까? 나는 stackoverflow에서 찾은 스크립트로 이미지를 압축하려고했지만 올바르게 할 수는 없습니다. 매번 검은 색 사진이 나타납니다. move_uploaded_files로 압축 이미지 파일

$data = array(); 
if (isset($_GET['files'])) { 
    $error = false; 
    $files = array(); 
    $uniqid = uniqid(); 
    $uploaddir = '../../images/'.$uniqid; 
    foreach($_FILES as $file) { 
     if (move_uploaded_file($file['tmp_name'], $uploaddir.basename($file['name']))) { 
      $files[] = $uploaddir.$file['name']; 
     } else { 
      $error = true; 
     } 
    } 
    $data = ($error) ? array('error' = > 'There was an error uploading your files') : array('files' = > $files); 
} else { 
    $arr - > image = $file['name']; 
    $_SESSION['image'] = "img-".$file['name']; 
    $arr - > ok = "ok"; 
    $data = array('success' = > 'Form was submitted', 'formData' = > $file['name']); 
} 

이 여러분 모두 감사합니다 :이 코드를 가지고 I

!

+0

을'기본 이름()'에 '$ files [] = $ uploaddir.basename ($ file [ 'name']);' –

+0

'move_uploaded_file'는 업로드 된 파일 만 이동시킬 수 있습니다 :'move_uploaded_file()'하지만'$ files' 배열에 저장하면 안됩니다 : 최종 위치로 이 기능으로 파일을 수정할 수 없습니다. –

+0

이 링크를 확인하실 수 있습니다. https://www.apptha.com/blog/how-to-reduce-image-file-size-while-uploading-using-php-code/ –

답변

0

시도하여 $ 파일에 [] 배열의 삽입도 기본 이름을()를 사용하여 :

변경이 : 여기에

foreach($_FILES as $file) { 
     if (move_uploaded_file($file['tmp_name'], $uploaddir.basename($file['name']))) { 
      $files[] = $uploaddir.$file['name']; 
     } else { 
      $error = true; 
     } 
    } 

: 당신은 사용

foreach($_FILES as $file) { 
     if (move_uploaded_file($file['tmp_name'], $uploaddir.basename($file['name']))) { 
      $files[] = $uploaddir.basename($file['name']); 
     } else { 
      $error = true; 
     } 
    }