2012-08-07 66 views
0

這被認爲是非常直接的並且讓我發瘋!嘗試使用PHP上傳文件時出現「未定義索引」

我想用PHP上傳文件並將文件寫入MySQL作爲blob。

問題是,該網站拋出了「未定義指數」當我試圖使用

$ _FILES [「文件」] [「tmp_name的值」]屬性的所有時光。

這裏是我的代碼:

<head> 
    <title>Upload Worksheet</title> 
</head> 
<body> 
    <form action="index.php" method="POST" enctype="multipart/form-data"> 
     <input type="hidden" name="MAX_FILE_SIZE" value="2000" /> 
     File : 
     <input type="file" name"file" id="file"><input type="submit" value="Upload"> 
    </form> 


    <?php 

     //connect to db 
     mysql_connect("localhost","root","") or die(mysql_error()); 
     mysql_select_db("autoedi") or die(mysql_error()); 

     //file properties 
     $file = $_FILES['file']['tmp_name']; 

     if(!isset($file)) 
     echo "Please choose a file."; 
     else { 
      $uploadfile = addslashes(file_get_contents($_FILES['file']['name'])); 
      $uploadfilename = addslashes($_FILES['file']['tmp_name']); 
     } 


    ?> 


</body> 

應該像這樣的錯誤信息,如:

Error Message

我還沒有得到到數據庫的一面,我不能經過這個階段。

我是一個PHP noob,所以任何幫助將不勝感激!

回答

3

您收到錯誤消息,因爲表單尚未發送。當你點擊上傳按鈕時,表單被髮送到你的服務器,PHP用數據填充$ _POST和$ _FILES數組。但是,直到那時,數組纔是空的。因此,它是很好的做法,檢查數據是否被設置,像這樣:

if (isset ($_POST['upload'])) 
{ 
    // upload logic here 

    if(!isset($_FILES['file']) || ($_FILES['file']['tmp_name'] == '')) 
     echo "Please choose a file."; 
    else { 
     $uploadfile = addslashes(file_get_contents($_FILES['file']['name'])); 
     $uploadfilename = addslashes($_FILES['file']['tmp_name']); 
    } 
} 

這裏假設你有一個名爲「upload」一個提交按鈕。

+0

好了,所以我在此添加和錯誤消息消失了,但它仍然是空的。如果(!isset($ _POST ['upload'])) \t echo「請選擇一個文件。」我已經將此添加到我的邏輯頂部 - \t \t \t - 但是當我選擇一個文件並點擊「上傳」後,它仍然給我這個信息,這意味着它仍然沒有設置,但我不明白爲什麼? – 2012-08-07 07:14:52

+1

你有一個名爲「上傳」的按鈕? '' – DavidS 2012-08-07 07:23:42

+0

對不起DavidS,沒有添加「name」屬性。這部分是整理出來的。它仍然表示文件未設置。不明白爲什麼不呢? – 2012-08-07 07:34:54

0

上面的回答是完美的,因爲你應該檢查的數值後,爲了運行這些有價值的代碼,但你也可以試試下面的

<?php 

     //connect to db 
     mysql_connect("localhost","root","") or die(mysql_error()); 
     mysql_select_db("autoedi") or die(mysql_error()); 

     //file properties 
     if(isset($_POST)) 
    { 

     if(array_key_exists('file',$_FILES)) 
    { 

    $file = $_FILES['file']['tmp_name']; 

     if(!isset($file)) 
     echo "Please choose a file."; 
     else { 
      $uploadfile = addslashes(file_get_contents($_FILES['file']['name'])); 
      $uploadfilename = addslashes($_FILES['file']['tmp_name']); 
     } 

} 


    ?> 
相關問題