2014-01-11 2 views
0

그래서이 파일 업로드 시스템을 PHP로 만들고 있습니다. $ target_path는 절대 경로이며, 업로드 될 폴더의 권한은 777로 설정됩니다. tmp_name도 유효한 내용을 반환하고 $ _FILES [ 'file_uploaded']는 배열입니다.move_uploaded_file 올바른 경로와 권한으로 false를 반환합니다.

그러나 다음 코드 줄을 실행할 때. 거짓을 반환합니다.

move_uploaded_file($_FILES['file_uploaded']['tmp_name'], $target_path) 

내가 여기에 뭔가가 없습니까?

업데이트 [양식 HTML 코드]

<form action="photos.php" enctype="multipart/form-data" method="POST"> 

    <input type ="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size; ?>" /> 
    <input type ="hidden" name ="upload" value="upload" /> 
    <input type="file" name="file_upload" /> 
    <input type="text" name="tags" value="" /> 

    <input type="radio" name="size" value="_small" checked> Small<br> 
    <input type="radio" name="size" value="_medium"> Medium<br> 
    <input type="radio" name="size" value="_large"> Large<br> 

    <select name="imagelib_id"> 
    <option value="1">General</option> 
    </select> 
<input type="submit" name="submit" value="Upload" /> 

솔루션 나는 업로드 된 파일의 파일 이름을 놓쳤다. 그것은 PHP manual entry에서 말하듯이

move_uploaded_file($_FILES['file_uploaded']['tmp_name'], $target_path . $_FILES['file_uploaded']['name']); 
+0

양식 HTML 코드를 게시 할 수 있습니까? –

답변

0

는, 요구의 두 번째 매개 변수는 파일 이름, 디렉토리가 아닌 될 다음 줄은 내 문제를 해결했습니다. 당신은 샘플 코드를 따라 배열의 "name" 값을 사용할 수 있습니다

:

// FIXME: verify filename - see below 
$destination = $target_path . $_FILES['file_uploaded']['name'];  
move_uploaded_file($_FILES['file_uploaded']['tmp_name'], $destination); 

내가 강하게 PHP 매뉴얼에 this comment의 도움말을 따라 위험한 문자와 올바른 파일 확장자에 대한 파일 이름을 모두 확인하는 것이 좋습니다를

// snippet taken from the comment by Yousef Ismaeil Cliprz 
function check_file_uploaded_name ($filename) { 
    (bool) ((preg_match("`^[-0-9A-Z_\.]+$`i",$filename)) ? true : false); 
} 
+0

실제로 오류를 반환하지 않으므로 파일 이름 일 가능성이 높습니다. 그러나 나는 무엇을 잊고있다. 대상 경로는 images /로 끝납니다. 따라서 test.jpg와 같은 파일을 업로드하면 images/test.jpg 파일을 만들어야합니다. 맞습니까? – Nijn

+0

아, 대상은 디렉토리가 아니라 파일 이름이어야합니다. 내 대답을 업데이트 할게. – akirk

+0

당신은 그것을 얻었다! 감사! 내 파일이 이제 target_path에 있습니다! 최고 – Nijn

관련 문제