2012-07-05 5 views
0

다음과 같은 형식이는 PHP 내가 양식에 아무것도 선택 누르지PHP 스크립트를 업로드 문제

<?php 

    if ((($_FILES["file"]["type"] == "image/gif") 
    || ($_FILES["file"]["type"] == "image/jpeg") 
    || ($_FILES["file"]["type"] == "image/png") 
    || ($_FILES["file"]["type"] == "image/jpg") 
    || ($_FILES["file"]["type"] == "image/pjpeg")) 
    && ($_FILES["file"]["size"] < 200000000000)) 
     { 
     if ($_FILES["file"]["error"] > 0) 
     { 
     echo "Return Code: " . $_FILES["file"]["error"] . "<br />"; 
     } 
     else 
     { 
     echo "Upload: " . $_FILES["file"]["name"] . "<br />"; 
     echo "Type: " . $_FILES["file"]["type"] . "<br />"; 
     echo "Size: " . ($_FILES["file"]["size"]/1024) . " Kb<br />"; 
     echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br />"; 

     if (file_exists("pics/2012/Blackhall Primary/" . $_FILES["file"]["name"])) 
      { 
      echo $_FILES["file"]["name"] . " already exists. "; 
      } 
     else 
      { 
      move_uploaded_file($_FILES["file"]["tmp_name"], 
      "pics/2012/Blackhall Primary/" . $_FILES["file"]["name"]); 
      echo "Stored in: " . "pics/2012/Blackhall Primary/" . $_FILES["file"]["name"]; 
      } 
     } 
     } 
    else 
     { 
     echo "Invalid file"; 
     } 
    ?> 

의 스크립트 내 페이지의 HTML 페이지

<form action="upload_file.php" method="post" 
enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file" /> 
<br /> 
<input type="submit" name="submit" value="Submit" /> 
</form> 

에 있습니다. 그것은 잘 작동했다. 양식이있는 페이지는 upload pictuture.html이라고하며 스크립트는 upload_file.php라고합니다.이 파일은 루트에 있고 pics/2012/blackhall 폴더가 존재하고 사진 디렉토리도 루트에 있습니다.

이것은 작동했지만, 그렇지 않은 사람은 내가 만든 모든 오류를 볼 수 있습니다.

감사 로스

+0

파일 정보를 표시합니까? 폴더 이름에 공백을 제거하려고 했습니까? error_log를 확인 했습니까? – Mustafa

+0

아니요 울리지 않습니다. – Ross

답변

1
이 권한을 변경

누구에 의해 스크립트 (보통 www가 데이터 또는 아파치를) 실행 -이 계정 반드시 작성하고 아마 사진이 업로드 디렉토리에 대한 읽기 권한을 가지고있다.

어쨌든 $_FILES["file"]["type"]을 기준으로 파일 형식을 검사하는 것은 안전하지 않습니다. 해커가 쉽게 위장 할 수 있습니다.