2016-02-29 70 views
1

我想要一個表單,其中人們可以提交文件上傳並隨後鏈接到一個mySQL數據庫。

在HTML/PHP文件:

<form enctype=」multipart/form-data」 action="process_file.php" method="post" > 
       <!-- First/Last Name input boxes --> 
       <p> 
        <label for="fileUpload" id="fileUploadLabel">Proposal File (5MB Maximum):</label> 
        <input type="file" name="fileUpload[]" id="fileUpload" /> 
       </p> 
       <input type="submit" name="submit" id="submit" /> 
      </form> 

而且process_file.php文件:

<?php 
    require("../../include/utility.php"); 
    if($_SERVER["REQUEST_METHOD"]=="POST") { 
     print_r($_FILES); 
       $dbconn = connectToDB(); 
       // Get and clean the data. 
       $fname = cleanInput($_POST["fname"]); 
       $lname = cleanInput($_POST["lname"]); 
       $new_filename = str_replace(' ','', basename($_FILES['fileupload']['name'])); 
       $imageFileType = pathinfo($_FILES['fileUpload']['name'],PATHINFO_EXTENSION); 

       printf("File name: $new_filename <br />\n"); 

       $target_dir = "../proposals/2016"; 
       $target_file = $target_dir . $lname . "_" . $fname . "_proposal" . $imageFileType; 
       printf("File Type is: $imageFileType <br />\n"); 
    } 
    /* [REDACTED] */ 
?> 

的的print_r($文件)總是給我 「陣列()」。週末我在網上瀏覽過,今天相當一部分都無濟於事。

我檢查了enctype,我檢查了拼寫,capitilization,添加/刪除「[]」和其他任何我能想到的。

我知道它可以與服務器的設置一起工作,因爲在同一臺確切的服務器上的其他人已經能夠得到這個工作。

有沒有人有一個想法,爲什麼這不工作? (我可以提供更多的出[刪除]段,但由於$ _FILES是空的代碼不反正工作

+2

什麼是「」「」「」「」「」「」「」「」「」「」「」「」「? – 2016-02-29 23:47:00

+2

「multipart/form-data」'不用Word編碼。 –

+2

和'fileUpload'!='fileupload' –

回答

0

通過您的代碼去。

」multipart/form-data」 - 那些彎引號都嗆你的腳本。

那些本來應該定期"報價:

"multipart/form-data"

那麼你的文件輸入持有該名稱屬性name="fileUpload[]"然而,你ü唱歌$_FILES['fileupload']陣列完全小寫。

數組區分大小寫,應該讀作$_FILES['fileUpload']

我也注意到,如果2016是一個文件夾,這$target_file = $target_dir . $lname將翻譯爲2016FILE.xxx而不是可能的意圖2016/FILE.xxx

所以,如果是這樣的話,那麼你需要添加一個尾部的斜槓proposals/2016/

  • 確保所有文件夾都有適當的權限寫入。

error reporting添加到您的文件的頂部,這將有助於發現錯誤。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// Then the rest of your code 

旁註:顯示錯誤應該只在分期完成,並且從不生產。