2011-05-03 64 views
0

csv文件的上傳所以我想:不清楚關於PHP

  • 上傳CSV文件,該文件將包含學生人數,一到每一行的列表(392232,每行)。

  • 填充與學生人數的數組(因爲我已經到位,從學生的數字陣列查找ID和存儲等有一個過程,如果他們手動添加學生)

我一直在尋找一個教程發現here

但是我稍微混淆這樣的:

if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){...

哪裏,他從建立'tmp_name'?無論如何,如果有人可以解釋我應該如何解決這個問題,我會很感激這個幫助。

千恩萬謝,

編輯:加入其中,它是不工作的進展情況。

if(isset($_POST['csv_submit'])){ 
    if(isset($_FILES['csv_file']) && is_uploaded_file($_FILES['csv_file']['tmp_name'])){ 



     //upload directory 
     $upload_dir = "/ece70141/csv_files/"; 
     //create file name 
     $file_path = $upload_dir . $_FILES['csv_file']['name']; 

     //move uploaded file to upload dir 
      // GETTING THE ERROR BELOW. 
     if (!move_uploaded_file($_FILES['csv_file']['tmp_name'], $file_path)) { 
      //error moving upload file 
      echo "Error moving file upload"; 
     } 

     print_r($_FILES['csv_file']); 

     //delete csv file 
     unlink($file_path); 
    } 
} 

回答

5

$_FILES是一個神奇的超全球類似於$_POST。它是上一次請求中上傳的每個文件的數組,以及存儲該文件的位置(tmp_name)。

tmp_name基本上是由Web服務器生成的,以讓PHP知道他們存儲文件的位置。

你必須在$_FILES陣列中的每個元素爲您提供以下項目:

  1. 名(原文件名)
  2. 類型(文件的MIME類型,即純文本/ )
  3. tmp_name的值(路徑上傳文件的臨時位置)
  4. 錯誤(上傳時,0時發生錯誤時沒有錯誤)
  5. 大小(上傳文件的大小,以字節爲單位)

從我在代碼中可以看到的情況來看,這將工作得很好,正如評論中所討論的,我認爲問題在於HTML。

您鏈接的教程有一個不正確的<form ..>標記定義。對於文件上傳,你需要設置enctype屬性,下面是它應該是什麼樣子:

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

確定,因此,如果你看一下我的編輯,我加入,我想簡單地看看代碼該文件正在上傳。然而,它目前沒有得到我所測試過的評論。 – buymypies 2011-05-03 16:22:42

+0

你也可以發佈你的HTML?我假設你已經嘗試用var_dump($ _ FILES)調試整個'$ _FILES'數組;'?如果這是空的,則表示您缺少'

'標籤中的'enctype =「multipart/form-data」'屬性。編輯:只是看了教程,HTML代碼將不會工作,因爲它缺少說屬性。 – 2011-05-03 16:24:37

+0

添加了所說的屬性和使用的代碼我得到了這個輸出'錯誤移動文件上傳' 'Array([name] => students.csv [type] => text/csv [tmp_name] =>/tmp/php605NT9 [error] => 0 [size] => 16)',其大小爲16.我假設文件已上傳,但是我的代碼仍然希望顯示錯誤。 – buymypies 2011-05-03 16:31:22