2012-02-15 137 views
-1

我有一個基本的上傳表單:PHP文件上傳

<form method="post" action="" enctype="multipart/form-data" >  
    <input type="file" name="logo"> 
    <input type="submit" class="button-primary" value="Upload Image"> 
</form> 

這就是我如何上傳東西(這是WordPress的功能,但問題是,而PHP相關的,所以我問在這裏,不在WP-SE):

if ($_FILES) { 
    foreach ($_FILES as $file => $array) { 
    $uploaded = insert_attachment($file,$post_id); 
    $uploaded_src = wp_get_attachment_url($uploaded); 
    update_option('logo', $uploaded_src); 
    }  
} 

現在,有兩個問題,我不知道如何解決這些問題:

  1. 當用戶上傳一個文件nd點擊圖片上傳的「上傳圖片」。但是,如果用戶刷新頁面,則iamge會再次上傳。並再次,並再次。我相信表單在刷新後自動發送,修復該問題的最簡單方法是什麼?

  2. 正如你可以看到我的代碼只更新一個名爲「logo」的選項,如何獲取上傳字段的名稱並將其傳遞給foreach循環,以便我可以在頁面上放置更多上傳字段?我的意思是:update_option('ThisFormUploadInputID', $uploaded_src);

非常感謝! :)

回答

1

當用戶上傳文件並點擊「上傳圖片」時,圖片正在上傳 。但是,如果用戶刷新頁面,iamge會再次上傳一次 。並再次,並再次。我相信刷新後表單會自動發送 ,修復該問題的最簡單方法是什麼?

PRG pattern - 在成功POST後,發送Location標題並終止腳本。來自瀏覽器的下一個請求將爲GET,刷新頁面將不會重新發送表單。

至於第二個問題,print_r($_FILES)可能會有所幫助。

0

對於第二個問題:
您需要更多字段才能上傳更多文件或一些指導性數據?如果是這樣的文件,是像以前的答案 - 看看var_dump($_FILES)。如果您需要一些數據輸入,請在$_POST中查看它們。

而關於清爽。
所以,是的,你可以發送Location標題從PHP,但你可以得到Headers already sent警告。所以使用JS然後<script>document.location="www.yourdomain.com"</script>