2014-10-04 2 views
0

3 개의 파일을 동시에 로컬 서버에 업로드하려고합니다. 다음 스크립트는 다음과 같습니다세 파일 중 하나만 업로드 중입니다.

<form method="post" action="<?php echo($_SERVER['PHP_SELF']);?>" enctype="multipart/form-data" > 

Note: All files are mandatory <br/><br/> 

<input type="hidden" name="MAX_FILE_SIZE" value="30000" /> 

Select first image: <input name="img[]" type="file"/> <br/> 
Select second image: <input name="img[]" type="file"/> <br/> 
Select third image: <input name="img[]" type="file"/> <br/> 

<br/><br/> 
<input type="submit" name="submit" value="Go!"/> 
</form> 

<?php 

if (isset($_FILES)) { 

    for ($key=0; $key<=2; $key++) 
    { 
     $tmp_name = $_FILES["img"]["tmp_name"][$key]; 
     $name = $_FILES["img"]["name"][$key]; 
     move_uploaded_file($tmp_name, "img/$name"); 
    } 


    echo "Done!"; 
} 

?> 

나는 두 가지 문제에 직면하고있다 : 즉시

  1. 을 페이지가로드, 나는 만 두 번째 파일 업로드지고 Undefined index: img
  2. 말을 통지 받고 있어요.

어떤 생각이 잘못 되었습니까?

가 파일 업로드에서이 읽기 : 당신은 오류 2를 얻고있다

+0

당신이 당신의 $ _FILES 구조를 var_dump'd (또는 단계 디버거에서 검사) 무슨 일이 일어나고 있는지 확인 하시겠습니까? –

+0

여기에'Array ([img] => Array ([name] => Array ([0] => 1.jpg [1] => 2.jpg [2] => 3.jpg)/opt/lampp/temp/phpspbdSN [2] => 배열 ([0] => [1] => image/jpeg [2] (0) => 2 [1] => 0 [2] => 2) [크기] => 배열 ([0] => 0 [1] => 11721 [ 2] => 0))) 첫 번째와 세 번째 파일 유형에 문제가있는 것처럼 보입니다. 하지만 이미지 뷰어에서 제대로 볼 수 있습니다. – dotslash

+0

아, 알겠습니다! 파일 크기가 숨겨진 필드에 정의 된 한도를 초과했습니다. 저를 올바른 방향으로 가리켜 주셔서 감사합니다! 자, 정의되지 않은 인덱스 통지를 어떻게 처리합니까? – dotslash

답변

1

는 파일은 두 번째 충분히 작고, 너무 큰 http://php.net/manual/en/ini.core.php#ini.upload-max-filesize

+0

그랬습니다. 대답 해줘서 고마워! 왜 정의되지 않은 인덱스 통지를 얻는 지 알기 원하십니까? :-) – dotslash

+1

$ _FILES가 설정되어 있는지 확인하고 있지만 전역 변수이므로'if (isset ($ _ FILES [ 'img'])) {'. 또한 각 반복마다'$ _FILES [ "img"] [ "tmp_name"] [$ key]'가 설정되어 있는지 확인해야합니다. 정확히 3 개의 파일을 업로드하지 않으면 통지를 받게됩니다. –

+0

아주 좋습니다. 답변을 주셔서 감사합니다. :디 – dotslash

관련 문제