2013-07-16 57 views
0
$tmpName = basename($_FILES['uploadfile']['tmp_name']); 
$rightname = basename($_FILES['uploadfile']['name']); 
move_uploaded_file($_FILES['uploadfile']['tmp_name'], $workDir."/".$tmpName) or die("Cannot move uploaded file to working directory"); 
if(!is_writable($_POST['filetype'])) 
    die('You cannot upload to the specified directory, please CHMOD it to 777.'); 
move_uploaded_file($_FILES['uploadfile']['tmp_name'], $_POST['filetype'].'/'.$rightname) or die("Cannot move uploaded file to destination directory"); 

我有一個表單上傳文件並將數據發佈到包含上述代碼的php腳本。上面的代碼部分工作,如第一個'move_uploaded_file'工作,上傳的文件從var/tmp文件夾移動到$ workDir文件夾。該文件的名稱與服務器在將上載文件放在tmp文件夾上時使用臨時名稱提供的名稱相同,然後再將其移至目標目錄。我覺得這是有效的,因爲在我提交表單之後,當它將文件放入tmp文件夾時,我不重命名服務器給予文件的臨時名稱。因爲第二個'move_uploaded_file()'與指定的錯誤一起死亡。該目錄是可寫的。它被鑲嵌成'777'。沒有問題。這就是我將文件名稱更改爲需要的名稱。似乎是一個小問題,但我已經花了太多的時間在這沒有運氣。PHP中的移動加載文件功能將文件移動到臨時目錄但不移動到目標目錄

你叫 move_uploaded_file()

回答

0

你第一次搬離臨時文件夾中文件$workDir。之後,上傳的文件不再存在於臨時目錄中。

只需使用rename()功能,該文件從$workDir."/".$tmpName移動到最終目的地。

// moves file from workdir to final destination 
rename($workDir."/".$tmpName, $_POST['filetype'].'/'.$rightname); 
+0

另一方面我不明白爲什麼這兩步的方法是需要的 – mnagel

+0

謝謝:) rename()完美工作。 – Sai

+0

@mnagel是的。我最初是爲了測試而保留原樣。但現在我擺脫了額外的步驟,它仍然有效。謝謝:)有趣的是,這開始實際上是一個ftp問題。但爲了獲得上傳功能,我不得不放棄ftp路由,因此我保留了部分代碼。 – Sai