2015-02-01 10 views
0

나는 PHP 영역에서 새거야. 인 move_uploaded_file 항상 false에서move_uploaded_file 내 로컬 컴퓨터에서 작동하지 않습니다

<?php 
    if(isset($_FILES['file'])) { 

     $file = $_FILES['file']; 
     if($file['error'] === 0) { 
      $distination = 'uploads/'; 
      $file_ext = pathinfo($file['name'], PATHINFO_EXTENSION); 
      $filename = $distination . uniqid('', true) . '.' . $file_ext; 
      if(!move_uploaded_file($file['name'], $filename)) { 
       echo "File upload failed!"; 
      } 
     } 
    } 
?> 
<form action="testupload.php" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file"> 
    <input type="submit" value="Upload"> 
</form> 

반환 값 :이 파일을 업로드하는 나의 시도이다. 업로드 스크립트 파일과 동일한 디렉토리에 업로드 폴더를 만듭니다.

+0

'uploads /'디렉토리는 웹 서버 사용자가 쓰기 가능하지 않은 것 같습니다. _ 항상 오류보고가 표시되고 다음 코드를 표시하는 코드를 개발합니다. 'error_reporting (E_ALL); ini_set ('display_errors', 1); 그리고 실패 이유를 확인할 수 있습니다. –

+1

$ distination = $ _SERVER [ 'DOCUMENT_ROOT']을 (를) 추가해보십시오. '/ uploads /'; –

+0

... 그것은 모두 '업로드'가 폴더 구조에있는 지에 따라 다르지만, 적어도 '업로드 /'또는 './uploads'가 아니라 '업로드 /'가 될 것으로 기대합니다. 'uniqid'는 공백이 아닌 값을 반환합니다. –

답변

0

tmp_name 값 대신 name 값을 사용하는 것이 가장 큰 문제는 $_FILES 배열입니다.

name원본 업로드 된 파일의 이름, tmp_name은 업로드 후 파일의 위치입니다. Manual Page

아래의 고정 버전. 또한 대상 디렉토리에 대한 확인 및 사용할 수없는 경우 자동으로 생성하는 기능을 추가했습니다.

<?php 
    if(isset($_FILES['file'])) { 

     $file = $_FILES['file']; 
     if($file['error'] === 0) { 
      $distination = 'uploads/'; 
      if(!file_exists($distination)){ 
       mkdir($distination, 0777, true); 
      } 
      $file_ext = pathinfo($file['name'], PATHINFO_EXTENSION); 
      $filename = $distination . uniqid('', true) . '.' . $file_ext; 
      print_r($file); 
      if(!move_uploaded_file($file['tmp_name'], $filename)) { 
       echo "File upload failed!"; 
      } 
     } 
    } 
?> 
<form action="testupload.php" method="post" enctype="multipart/form-data"> 
    <input type="file" name="file"> 
    <input type="submit" value="Upload"> 
</form> 
관련 문제