2013-04-30 32 views
0

我想運行下面的代碼,但得到很多錯誤,如下面的一個;基本的PHP錯誤

注意:未定義指數:文件中C:\xampp\htdocs\SimpleCMS\_class\simpleCMS.php在線14,21,22.23。

而且我的代碼是

<html> 
<body> 

<form action="upload_file.php" method="post" enctype="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 ($_FILES["file"]["error"] > 0) 
{ 
echo "Error: " . $_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 "Stored in: " . $_FILES["file"]["tmp_name"]; 
} 
?> 
+0

這是所有在一個單一的文件?如果是這樣,您的PHP代碼將在您加載表單後立即運行,因爲沒有檢查是否已提交表單。您需要將PHP包裝在if語句中 - 檢查是否設置了$ _POST ['submit']'。 – andrewsi 2013-04-30 13:48:13

+0

我按照這個教程http://www.w3schools.com/php/php_file_upload.asp – 2013-04-30 13:49:36

回答

0

當你第一次加載頁面時,$_FILES變量是空的。因此,以任何方式使用它,檢查,你的屬性設置,例如,使用isset()這樣前:

<?php 
if (isset($_FILES['file'])) { 
    if ($_FILES["file"]["error"] > 0) { 
    echo "Error: " . $_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 "Stored in: " . $_FILES["file"]["tmp_name"]; 
    } 
} 
?> 
0

你忘了檢查您的形式已提交。

在你的情況,包你的PHP代碼到,如果像這樣的:

if (isset($_POST['submit'])) 
{ 
    // your code 
} 
0

使用由指數從陣列獲取元素的前isset功能。

0

由於$ _FILE變量中沒有文件,因此會出現該錯誤。 ,你應該檢查是否設置爲使用它像這樣前:

if(isset($_FILES["file"])) { 
    if ($_FILES["file"]["error"] > 0) 
    { 
     echo "Error: " . $_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 "Stored in: " . $_FILES["file"]["tmp_name"]; 
    } 
} 
0

你已經知道,在第一$ _FILES是空的,但是PHP要通知你在使用沒有必要指標情況。

你可以做這樣的這種特殊情況下:

if ($_FILES["file"]["error"] > 0) 
{ 
    echo "Error: " . @$_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 "Stored in: " . @$_FILES["file"]["tmp_name"]; 
} 

「@」將導致你會沒得到任何警告。

+0

這只是隱藏了錯誤,並在第一時間做任何事情! – Sirko 2013-04-30 14:03:43