2013-05-22 5 views
0

아래 파일을 서버에 업로드하는 코드를 작성했습니다.smarty를 사용하여 서버에 파일을 업로드하는 방법은 무엇입니까?

Home.tpl

 <form enctype="multipart/form-data" method="post" action="upload_file.php" > 
    <label for="file">Filename:</label>&nbsp;&nbsp; 
    <input type="file" name="file" id="file"><br> 

upload_file.php

 if(($_FILES["file"]["size"] > 0)) 
    { 
     $fileName = $_FILES["file"]["name"];//the files name takes from the HTML form 
     $fileTmpLoc = $_FILES["file"]["tmp_name"];//file in the PHP tmp folder 
     $fileType = $_FILES["file"]["type"];//the type of file 
     $fileSize = $_FILES["file"]["size"];//file size in bytes 
     $fileErrorMsg = $_FILES["file"]["error"];//0 for false and 1 for true 
     $target_path = "uploads/" . basename($_FILES["file"]["name"]); 

     $moveResult = move_uploaded_file($fileTmpLoc, $target_path); 
    } 

하지만 난 '정의되지 않은 인덱스 : 파일'점점 오류가 발생했습니다. 거기서 없애도록 도와주세요.

+2

언제 '정의되지 않은 색인 : 파일'오류가 발생합니까? –

+0

'upload_file.php'에서'var_dump ($ _ FILES);'를 먼저 실행 한 다음, 당신이보기를 기대하는 것처럼 보이는지 확인하십시오. –

+0

@Martinperry : 실행시 해당 줄에 도달 할 때 'if (($ _ FILES [ "file"] [ "size"]> 0))'. 나는 여기있다. – soundy

답변

0

변화

if(($_FILES["file"]["size"] > 0)) 

if((isset($_FILES["file"]["size"]) && $_FILES["file"]["size"] > 0)) 
+0

나는 당신이 말한 것처럼 사용했지만, 나는 어떤 결함이있어. 하지만 스크립트가 실행되지 않습니다 – soundy

1

당신이 오류를 매번 얻는 경우에, 그 사용자가 설정 한 해달라고 때문에 변수 $ _FILES. 이 변수는 양식을 제출 한 후에 만 ​​설정됩니다. 이 경우

는, 변수의 컨트롤을 추가, 오류 메세지를 지정하지 않고 제거하는 :

if((isset($_FILES["file"])) && ($_FILES["file"]["size"] > 0)) 
+0

나는 당신이 말한 것과 같이 사용했지만 어떤 오류가 발생하지 않습니다. 하지만 스크립트는 실행되지 않습니다. – soundy

+0

runinng은 무엇을 의미합니까? 오류? –

+0

오류가 발생합니다. 전체 스크립트가 실행되지 않습니다. – soundy

0

내가 생각하는 그 $ _FILES [ "파일"] [ "tmp_name"] [0] 첫 번째 파일에 대한. var_dump ($ _ FILES)로 확인하십시오. 또는 print_r ($ _ FILES) foreach를 사용하여 iterate itroate하십시오. something like

foreach ($arr as &$value) { 
    //... 
    $moveResult = move_uploaded_file($fileTmpLoc, "uploads/" . basename($_FILES["file"]["name"][$arr]); 
} 
+0

). 맞지 않습니다. 여러 파일에 $ _FILES [ "file"] [ "name"] [0]이 없습니다. [0] 이름의 첫 번째 문자를 줄 것입니다 (하지만 PHP에서도 확실하지 않습니다). –

관련 문제