2011-04-21 88 views
2

我在$ _FILES的處理頁面上找到索引找不到錯誤。據我所知,我的代碼在技術上是正確的(至少其他兩位查看它的人也無法找到任何錯誤)。PHP文件上傳

因此,首先,被稱爲與文件上傳顯示錶單功能:

function portfolioEditor($p) { 
    echo "<form method=\"post\" action=\"" . siteurl . "/manage/update.php\">"; 
    echo '<input type="text" name="name" id="name" class="grid4 first" value="' . $p['name'] . '" />'; 
    echo '<input type="text" name="posttype" id="posttype" class="grid4" value="' . $p['posttype'] . '" />'; 
    echo "\n<br />\n"; 
    echo '<textarea name="content" id="content" class="grid8 first">' . $p['content'] . '</textarea>'; 
    echo "\n<br />\n"; 
    echo '<input type="hidden" name="MAX_FILE_SIZE" value="30000" />'; 
    echo '<input name="file" value="' . $p['image'] . '" id="file" type="file" />'; 
    echo '<input type="submit" value="Submit" name="submit" id="submit" />'; 
    echo '<input type="hidden" value="true" id="fileup" name="fileup" />'; 
    echo '</form>'; 
} 

(把它作爲一個給定的,與表單的頁面調用portfolioEditor($ P)與$細節p滿的,或爲新項目的每一個資源我的空格。)

這是插入更新頁面(不含數據庫還)

$p = $_POST; 

$p['url'] = str_replace(" ", "-", $p['name']); 

foreach ($p as $k => $v) { 
    $p[$k] = addslashes($v); 
    //echo $v; 
} 

// FILE UPLOAD IF NEEDED 
if(isset($p['fileup']) && $p['fileup'] == "true") { 
    $loc = sitepath . "/files"; 
    $loc = $loc . basename($_FILES['file']['name']); 
    move_uploaded_file($_FILES['file']['tmp_name'], $loc); 
} 

我不知道爲什麼這是不工作, v在編寫自己的上傳腳本時看到使用幾乎完全相同的代碼。

+1

它看起來像你試圖設置'文件'類型輸入的'值'。由於安全問題,瀏覽器不應該允許這樣做。 – Entity 2011-04-21 13:12:20

回答

5

你需要把它添加到您的窗體:

enctype='multipart/form-data' 

所以,你的表單標籤變爲:

echo "<form method=\"post\" enctype='multipart/form-data' action=\"" . siteurl . "/manage/update.php\">"; 
3

添加爲form標籤屬性encytype="multipart/form-data"

echo "<form method=\"post\" action=\"" . siteurl . "/manage/update.php\" encytype=\"multipart/form-data\">"; 
+0

您複製了我的答案?真?你原來的帖子是'添加爲表單標籤屬性encytype =「multipart/form-data」'...就像一個供參考,最好是複製投票比複製答案。 – 2011-04-21 13:47:19

+0

對不起,但是cdburgess先到那裏。 – dkuntz2 2011-04-21 15:22:12

+0

@Dkun:沒關係。我不介意這些事情。謝謝。 – 2011-04-21 16:02:30

1

當你提交一個文件,表格應該有enctype="multipart/form-data"定義爲su ch

echo "<form 
method=\"post\" 
enctype=\"multipart/form-data\" 
action=\"" . siteurl . "/manage/update.php\">"; 
+1

您的enctype會導致異常。 「需要使用\轉義。 – 2011-04-21 13:48:38