2017-05-18 1 views
-2

이미지를 폴더에 업로드하는 PHP 스크립트가 있습니다.PHP 알림 : 정의되지 않은 인덱스 : 파일 업로드 사진

그것은 로컬로 작동되지만, 나는 다음과 같은 오류 메시지가 호스팅 서버에 넣어 때

[목 5월 18일 21 : 45 : 00.833970 2017] [fcgid가 : 경고] [PID 37560을 ] [클라이언트 151.229.83.93:44238] mod_fcgid : stderr : PHP 공지 사항 : 정의되지 않은 색인 : 에있는 파일 /home/linnas01/g/domainname.com/user/htdocs/php/uploadphoto.php에 9 번 라인, referer : http://domainname.com/photoupload.html

왜 이런 일이 일어나고 있으며 어떻게 해결할 수 있습니까? 이

<?php 

if (0 < $_FILES['file']['error']) { 
    echo 'Error: ' . $_FILES['file']['error'] . '<br>'; 
} 
else { 
    move_uploaded_file($_FILES['file']['tmp_name'], 'images/' . $_FILES['file']['name']); 
} 

?> 

내 html 파일이 파일은 아약스와 함께 게시됩니다이

<form enctype="multipart/form-data"> 
    <input id="upload-input" type="file" name="file" multiple="multiple" enctype="multipart/form-data"> 
    <input type="submit"> 
</form> 

모양처럼

PHP는 보인다.

var formData = new FormData(); 

for (var i = 0; i < files.length; i++) { 
    var file = files[i]; 
    fileNames.push(file.name); 

    // add the files to formData object for the data payload 
    formData.append("image", file); 
    } 

$.ajax({ 
    url: 'uploadphoto.php', 
    type: 'POST', 
    data: formData, 
    processData: false, 
    contentType: false, 
    success: function(data){ 
     console.log(data); 
    } 
}); 

I have also configured the directories and files as explained here.

+4

[PHP : "주의 : 정의되지 않은 변수", "공지 : 미정 지수"및 "주의 : 오프셋 미등록"]의 가능한 복제 (http://stackoverflow.com/questions/4261133/php-notice -undefined-variable-notice-undefined-index-and-notice-undef) – Bytewave

+0

tl; dr'name' 속성'file'을 가진 파일 필드에는'POST'가 없습니다. 귀하의 양식이 어떻게 보이는지 알면 더 많은 것을 도울 수 있습니다. – Bytewave

+0

'$ _FILES [ 'file']'이 사용되기 전에 그것이 채워 졌는지 확인하십시오. – chris85

답변

1

$_FILES에 사용중인 이름이 formData.append()에있는 이름과 일치하지 않는 것이 문제입니다.

또한 다중 파일 입력이므로 모든 파일을 가져 오기 위해 배열 스타일 이름을 사용해야합니다. 따라서 코드는 다음과 같아야합니다.

var formData = new FormData(); 

for (var i = 0; i < files.length; i++) { 
    var file = files[i]; 
    fileNames.push(file.name); 

    // add the files to formData object for the data payload 
    formData.append("file[]", file); 
    } 

PHP 코드에서 모든 업로드를 처리하려면 배열을 반복해야합니다.

foreach ($_FILES['file']['tmp_name'] as $i => $tmp_name) { 
    if ($_FILES['file']['error'][$i] != 0) { 
     echo 'Error: ' . $_FILES['file']['error'][$i] . '<br>'; 
    } else { 
     move_uploaded_file($tmp_name, 'images/' . $_FILES['file']['name'][$i]); 
    } 
} 
관련 문제