2016-07-13 2 views
0

localhost에서 작동하는 Apache Server를 사용하고 있습니다. PHP를 모르므로 w3schools 사이트의 코드를 시도했지만 제대로 작동하지 않습니다. 여기 PHP localhost에 파일 업로드

는 HTML 코드입니다 :

<!DOCTYPE html> 
<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="submit" value="Upload Image" name="submit"> 
</form> 
</body> 
</html> 

PHP 코드 :

<?php 
$target_dir = "uploads/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 
echo $target_file; 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
// Check if image file is a actual image or fake image 
if(isset($_POST["submit"])) { 
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
    if($check !== false) { 
     echo "File is an image - " . $check["mime"] . "."; 
     $uploadOk = 1; 
    } else { 
     echo "File is not an image."; 
     $uploadOk = 0; 
    } 
} 
?> 

는 PHP 코드의 시작 부분에 echo 명령은 단지 "업로드 /"그래서 나는 $를 추측 반환 _ 파일이 제대로 작동하지 않습니다.

EDIT2 내가 XAMPP 이번에 아파치를 다시 설치하고 난 코드에 더 이상 문제가 없다하지만 내 "업로드"에 업로드 어떤 파일이 아직 없다 (이것은 "파일은 이미지입니다"출력) 폴더. 내 "업로드"폴더가 localhost의 웹 페이지와 같은 폴더에 있습니다.

기본 php.ini (file_uploads = on)를 사용하고 있습니다. 다른 디렉토리에서 다른 크기의 다른 파일을 시도했지만 지금까지 성공하지 못했습니다.

+1

작업중인 디렉토리에'uploads' 폴더가 생성 되었습니까? – Sree

+0

그럼 뭐가 문제 야? – user1234

+0

마지막 문장을 편집했습니다. PHP 코드 시작 부분의 echo 명령은 "uploads /"만 반환하므로 $ _FILES가 제대로 작동하지 않습니다. – oro777

답변

2

편집은

이 잘 작동합니다. 내용 길이 경고에 관해서는 php.ini 파일을 편집해야합니다.
php.ini
이 두 줄을 편집하십시오.
post_max_size = 200M
upload_max_filesize = 200M

<?php 
if (!empty($_FILES) && isset($_FILES['fileToUpload'])) { 
    switch ($_FILES['fileToUpload']["error"]) { 
     case UPLOAD_ERR_OK: 
      $target = "upload/"; 
      $target = $target . basename($_FILES['fileToUpload']['name']); 

      if (move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target)) { 
       $status = "The file " . basename($_FILES['fileToUpload']['name']) . " has been uploaded"; 
       $imageFileType = pathinfo($target, PATHINFO_EXTENSION); 
       $check = getimagesize($target); 
       if ($check !== false) { 
        echo "File is an image - " . $check["mime"] . ".<br>"; 
        $uploadOk = 1; 
       } else { 
        echo "File is not an image.<br>"; 
        $uploadOk = 0; 
       } 

      } else { 
       $status = "Sorry, there was a problem uploading your file."; 
      } 
      break; 

    } 

    echo "Status: {$status}<br/>\n"; 

} 
+0

나는 대상 디렉토리를 c :/uploads로 변경하려고했지만 아무것도 업로드하지 않았습니다. 브라우저의 콘솔이 비어 있으며 파일 이름에 echo가 비어 있습니다. – oro777

+0

@ oro777 잠시만 기다려주세요. 내 대답을 편집하기 전에 먼저 내 편이 일하려고합니다. – DunnoHowToCode

+0

@ oro777 이러한 변경 사항을 시도하고 결과 또는 오류를 업데이트 해주세요. – DunnoHowToCode

0

당신의 코드 upload.php로 HTML은

<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="submit" value="Upload Image"> 
</form> 
</body> 
</html> 

잘 작동합니다. 난 그냥 그래서 당신은 아마 다른 뭔가가 그것을

uploads/untitled.pngFile is an image - image/png. 

를 확인했습니다.

사용중인 파일 목록과 전체 코드를 입력하십시오.