2012-02-09 56 views
8

我寫了一個簡單的文件上傳腳本,但它給了我未定義的索引文件1的錯誤。簡單的文件上傳腳本

<html> 
    <body> 
     <form method="post"> 
      <label for="file">Filename:</label> 
      <input type="file" name="file1" id="file1" /> 
      <br /> 
      <input type="submit" name="submit" value="Submit" /> 
     </form> 
    </body> 
</html> 
<?php 
if(isset($_POST['submit'])) { 
    if ($_FILES["file1"]["error"] > 0) { 
     echo "Error: " . $_FILES["file1"]["error"] . "<br />"; 
    } else { 
     echo "Upload: " . $_FILES["file1"]["name"] . "<br />"; 
     echo "Type: " . $_FILES["file1"]["type"] . "<br />"; 
     echo "Size: " . ($_FILES["file1"]["size"]/1024) . " Kb<br />"; 
     echo "Stored in: " . $_FILES["file1"]["tmp_name"]; 
    } 
} 
?> 

代碼中出現什麼問題?

+1

嘗試添加'ENCTYPE = 「的multipart/form-data的」'形成標籤 – k102 2012-02-09 08:18:02

回答

13

您在<form>元素中缺少enctype="multipart/form-data"

2

進行以下更改並嘗試。

<form method="post" action="" enctype="multipart/form-data" > 
-1

主要問題是您的表單無法通過http發送文件內容。 要發送二進制數據以及來自輸入元素的文本數據,您需要在表單標記中添加一個額外的屬性。

<form method="post" enctype="multipart/form-data"> 

然後在PHP代碼

嘗試這一行

<?php 

print_r($_FILES); 

?> 

上面的代碼會顯示關於從表單文件上傳的所有信息。

2

簡單的PHP文件上傳腳本另一種解決方案是在這裏:
(使yourfile.php並插入下面的代碼,然後把那yourfile.php在您的網站。)

<?php 
$pass = "YOUR_PASSWORD"; 
session_start(); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1256" /></head><body> 
<?php 
if (!empty($_GET['action']) && $_GET['action'] == "logout") {session_destroy();unset ($_SESSION['pass']);} 

$path_name = pathinfo($_SERVER['PHP_SELF']); 
$this_script = $path_name['basename']; 
if (empty($_SESSION['pass'])) {$_SESSION['pass']='';} 
if (empty($_POST['pass'])) {$_POST['pass']='';} 
if ($_SESSION['pass']!== $pass) 
{ 
    if ($_POST['pass'] == $pass) {$_SESSION['pass'] = $pass; } 
    else 
    { 
     echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post"><input name="pass" type="password"><input type="submit"></form>'; 
     exit; 
    } 
} 
?> 


<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> 
Please choose a file: <input name="file" type="file" /><br /> 
<input type="submit" value="Upload" /></form> 


<?php 

if (!empty($_FILES["file"])) 
{ 
    if ($_FILES["file"]["error"] > 0) 
     {echo "Error: " . $_FILES["file"]["error"] . "<br>";} 
    else 
     {echo "Stored file:".$_FILES["file"]["name"]."<br/>Size:".($_FILES["file"]["size"]/1024)." kB<br/>"; 
     move_uploaded_file($_FILES["file"]["tmp_name"],$_FILES["file"]["name"]); 
     } 
} 

    // open this directory 
    $myDirectory = opendir("."); 
    // get each entry 
    while($entryName = readdir($myDirectory)) {$dirArray[] = $entryName;} closedir($myDirectory); 
    $indexCount = count($dirArray); 
     echo "$indexCount files<br/>"; 
    sort($dirArray); 

    echo "<TABLE border=1 cellpadding=5 cellspacing=0 class=whitelinks><TR><TH>Filename</TH><th>Filetype</th><th>Filesize</th></TR>\n"; 

     for($index=0; $index < $indexCount; $index++) 
     { 
      if (substr("$dirArray[$index]", 0, 1) != ".") 
      { 
      echo "<TR> 
      <td><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td> 
      <td>".filetype($dirArray[$index])."</td> 
      <td>".filesize($dirArray[$index])."</td> 
       </TR>"; 
      } 
     } 
    echo "</TABLE>"; 
    ?> 
1

的Html

<!DOCTYPE html> 
<html> 
<body> 

<form action="upload.php" method="post" enctype="multipart/form-data"> 
    Select image to upload: 
    <input type="file" name="fileToUpload" id="fileToUpload"> 
    <input type="submit" value="Upload Image" name="submit"> 
</form> 

</body> 
</html> 

<?php 
$target_dir = "uploads/"; 
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); 
$uploadOk = 1; 
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION); 
// Check if image file is a actual image or fake image 
if(isset($_POST["submit"])) { 
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]); 
    if($check !== false) { 
     echo "File is an image - " . $check["mime"] . "."; 
     $uploadOk = 1; 
    } else { 
     echo "File is not an image."; 
     $uploadOk = 0; 
    } 
} 
?> 
+1

你能解釋一下什麼區別在你的答案和例如之間請問@解散器?你的答案包括其他人還沒有提到的? – kkuilla 2014-11-07 14:30:41

+0

我覺得他太浪費了。 – arunwebber 2014-11-07 14:32:23

+1

使用'getimagesize()'來檢查上傳的文件是否真的是一個圖像 – Ismail 2015-07-28 07:47:45

0
<html> 
<body> 
<form action="" method="post" ectype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="file" id="file"></br> 
<input type="submit" name="submit" value="Submit"> 
</form> 
<?php 
if(isset($_POST['submit'])) 
{ 
$allowedExts = array("gif", "jpeg", "jpg", "png"); 
$temp = explode(".", $_FILES["file"]["name"]); 
$extension = end($temp); 
if ((($_FILES["file"]["type"] == "image/gif") 
|| ($_FILES["file"]["type"] == "image/jpeg") 
|| ($_FILES["file"]["type"] == "image/jpg") 
|| ($_FILES["file"]["type"] == "image/pjpeg") 
|| ($_FILES["file"]["type"] == "image/x-png") 
|| ($_FILES["file"]["type"] == "image/png")) 
&& ($_FILES["file"]["size"] < 20000000) 
&& in_array($extension, $allowedExts)) 
    { 
    if ($_FILES["file"]["error"] > 0) 
    { 
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; 
    } 
    else 
    { 
    echo "Upload: " . $_FILES["file"]["name"] . "<br>"; 
    echo "Type: " . $_FILES["file"]["type"] . "<br>"; 
    echo "Size: " . ($_FILES["file"]["size"]/1024) . " kB<br>"; 
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; 
    if (file_exists("upload/" . $_FILES["file"]["name"])) 
     { 
     echo $_FILES["file"]["name"] . " already exists. "; 
     } 
    else 
     { 
     move_uploaded_file($_FILES["file"]["tmp_name"], 
     "upload/" . $_FILES["file"]["name"]); 
     echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; 
     } 
    } 
    } 
else 
    { 
    echo "Invalid file"; 
    }enter code here 
} 
?> 
</body> 
</html> 
+2

通常,如果答案包括解釋代碼意圖做什麼以及爲什麼解決問題而不引入其他問題,那麼答案會更有幫助。 – 2015-09-24 20:12:47

0

做以下修改,因爲這樣做下面的網站

$(document).ready(function(){ 
    $('input[teramfile-kname=teramfile_formajax]').click(function(e){ 
     $('.main aside[class=upload]').fadeOut('slow'); 
     $('.main aside[class=startupload]').delay(800).fadeIn('slow'); 
     e.preventDefault(); 
     var formData = new FormData($(this).parents('form[teramfile-fname='+$('input[teramfile-kname=teramfile_formajax]').attr('teramfile-fname')+']')[0]); 
     $.ajax({ 
      url: $('form[teramfile-fname='+$('input[teramfile-kname=teramfile_formajax]').attr('teramfile-fname')+']').attr('action'), 
      type: $('form[teramfile-fname='+$('input[teramfile-kname=teramfile_formajax]').attr('teramfile-fname')+']').attr('method'), 
      xhr: function() { 
       var myXhr = $.ajaxSettings.xhr(); 
       return myXhr; 
       return false; 
      }, 
      success: function (data) { 
       $('.main aside[class=startupload]').fadeOut('speed'); 
       $('.main aside[class=resultupload]').delay(1000).html(data).fadeIn('slow'); 
       $('.main aside[class=newupload]').delay(1000).fadeIn(); 
      }, 
      data: formData, 
      cache: false, 
      contentType: false, 
      processData: false 
     }); 
     return false; 
    }); 
}); 

http://www.teramfile.com/filedetails/e4fd5b2ec2/