2016-08-25 2 views
0

PHP를 통해 파일을 업로드하는 것은 이번이 처음입니다.PHP 기본 업로드 파일 스크립트

<form role="form" action="api/upload.php" id="uploadForm" method="post" enctype="multipart/form-data"> 
    <input id="fileToUpload" name="fileToUpload" type="file" class="file" /> 
    <button type="submit" name="submit" id="submit">Upload</button> 
</form> 

이제 여기에 PHP 스크립트는 참조에 'API/upload.php로 ":

<?php 
$target_dir = "files\\"; 

if(isset($_POST["submit"])) { 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 
$uploadOk = 1; 
} 

if (file_exists($target_file)) { 
echo "Sorry, file already exists."; 
$uploadOk = 0; 
} 

if ($_FILES["fileToUpload"]["size"] > 500000) { 
echo "Sorry, your file is too large."; 
$uploadOk = 0; 
} 

if ($uploadOk == 0) { 
echo $uploadOk . "Sorry, your file was not uploaded."; 
} else { 
    if (move_uploaded_file($_FILES["fileToUpload"]["name"], $target_file)) { 
    echo "The file ". basename($_FILES["fileToUpload"]["name"]). " has been uploaded."; 
    } else{ 
    echo "Sorry, there was an error uploading your file."; 
    } 
} 
?> 

이 논리 오류가 될 수 있습니다

여기 내 HTML입니다. 나는 잘 모르겠다. 그럼에도 불구하고 "죄송합니다. 파일을 업로드하는 중에 오류가 발생했습니다."라는 메시지가 계속 나타납니다. 내가 밖으로 에코 $ uploadOk

, 그것은 누군가가 내 오류를 발견하고 내가 그것을 해결하는 데 도움 주실 래요 1.

로 남아있다? 난 그냥 간단한 파일 업로드를하려고합니다.

미리 감사드립니다.

+0

분명히'move_uploaded_file()'작업이 실패했습니다. 함수에 대한 인수의 런타임 값은 무엇입니까? 대상 디렉토리가 존재합니까? PHP 프로세스가 그것에 쓸 수 있습니까? – David

+0

오류 메시지가 잘못되었습니다. 귀하의 실제 메시지는 "귀하의 파일이 업로드되었지만 그것을 옮기는 데 문제가있었습니다"입니다. 이는 이동 호출이 실패한 이유를 조사해야 함을 의미합니다. 그리고 전체 uplaod 확인 작업이 필요하다는 점에 유의하십시오. 단순히 업로드가 실패하지 않는다고 가정합니다. 이유 때문에 $ _FILES에'[ 'error']'매개 변수가 있습니다. $ _FILES의 데이터를 확인한다고해서 업로드가 성공했다는 의미는 아닙니다. 업로드에 실패하면 $ _FILES이 (가) 계속 채워집니다. '[ 'error']'가 0 (일명 UPLOAD_ERR_OK)이 아니라면, 다른 $ _FILES 정보를 믿을 수 없습니다. –

+0

양식이 기본 페이지에 있습니다. PHP 스크립트가 폴더에 있습니다. '파일'이라는 다른 폴더가 있습니다. –

답변

0

사용 $_FILES["fileToUpload"]["tmp_name"] 대신 $_FILES["fileToUpload"]["name"]

move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file); 

주의를해야합니다 -

$_FILES["fileToUpload"]["name"] 업로드 된 파일의 이름 만입니다. $_FILES["fileToUpload"]["tmp_name"]은 콘텐츠를 보유하는 임시 파일입니다.

희망이 도움이됩니다.

[편집 1]

나는 버튼에 value="submit" 속성을 추가하는 방법에 대한 잘못이었다. 0 검사가 isset($_POST["submit")) 인 경우 name="submit" 속성이면 충분합니다.