2010-07-21 20 views
0

這是一個問題。 我有一個HTML表單,其中有幾個字段。 其中一個字段 - 「上傳文件」。 當我上傳一個文件時,一切正常。但是當我選擇提交沒有文件的表單時,它給了我錯誤信息:「上傳文件時出錯,請重試」。在我看來,腳本認爲上傳文件是強制性的。 我該如何改變它?從HTML表格上傳文件時出錯

這是我的PHP:

//File upload 

// Where the file is going to be placed 
$target_path = "uploads/"; 

// Add the original filename to our target path. 
//Result is "uploads/filename.extension" 
$target_path = $target_path . basename($_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) { 
    echo "The file ". basename($_FILES['uploadedfile']['name']). 
    " has been uploaded"; 
} else{ 
    echo "There was an error uploading the file, please try again!"; 
} 

//End of file upload 

謝謝!

回答

1

調用函數move_uploaded_file

if (is_uploaded_file($_FILES['uploadedfile']['tmp_name'])) { 
+0

這工作,謝謝!但是,現在還有另一個問題。我想要將文件作爲附件發送至電子郵件後,將其刪除到目錄中。上傳文件時,一切正常。但是,如果沒有,我收到此錯誤消息:警告:取消鏈接(uploads /)[function.unlink]:是第191行/mydomain.com/Hawaii/html/contact_email.php中的目錄如何解決此問題? – vlevsha 2010-07-21 17:59:26

+0

函數unlink的參數必須是一個文件..在你的情況下,你通過了'uploads /'這是一個文件夾。 – dejavu 2010-07-21 19:01:00

+0

如何定義文件? 我嘗試了一些東西,他們沒有工作。 此外,當我使用$ target_path時,文件實際上從文件夾中被刪除,而當我使用文件變量時,它不會。 我想,也許我應該做一個類似這樣的檢查: if(is_uploaded_file($ _ FILES ['uploadedfile'] ['tmp_name'])){ – vlevsha 2010-07-21 19:22:47

0

move_uploaded_file返回一個布爾值,truefalse,根據操作的成功之前,您應該檢查使用功能is_uploaded_file

嘗試添加以下條件。

解決方案將是更嚴格地檢查,例如,如果通過is_uploaded_file函數完全上傳文件。

爲了正常工作,is_uploaded_file()需要像$_FILES['userfile']['tmp_name']一個參數的函數, - 客戶機$_FILES['userfile']['name']對上傳的文件名不起作用。

+0

這工作,謝謝你! 現在,還有另一個問題。 我想要將文件作爲附件發送到電子郵件後,將其刪除到目錄中。 上傳文件時,一切正常。 但如果沒有,我得到這個錯誤信息: 警告:取消鏈接(上傳/)[功能。取消鏈接]:目錄是/mydomain.com/Hawaii/html/contact_email.php 191行 我該如何解決? – vlevsha 2010-07-21 17:59:01

+0

如果這些帖子解決了這個問題,請接受一個答案,並問問你的後續問題。通過評論和編輯,這比首選的問答更受歡迎。 – miku 2010-07-21 18:27:11

0

move_uploaded_files的目標路徑應該是文件夾而不是文件。

您還應該檢查文件夾is_writeable和is_dir。