2011-11-30 79 views
1

我收到一個錯誤,當我嘗試重命名一個文件時,我正在使用下面的代碼將其從html表單轉換爲目錄。我需要通過將$studyId連接到它來更改文件名以使其唯一。該錯誤正確輸出文件originalName/studyId.extension。我可以將文件移動到「視頻」文件夾中,如果我沒有concocuation並且只使用$_FILES["sonogram"]["name"]作爲move_uploaded_file的第二個參數,那麼在php.net上有一些使用此語法的示例,您可以選擇要命名上傳文件的內容,我假設它很愚蠢。我應該提到我在Windows系統上。任何幫助將不勝感激php move_uploaded_file在移動過程中嘗試更改文件名

$pathParts = pathinfo($_FILES["sonogram"]["name"]); 
$file = $pathParts['filename'] . '/'. strval($studyId) . '.'. $pathParts['extension']; 
move_uploaded_file($_FILES["sonogram"]["tmp_name"],"videos/". $file); 
+0

你可以張貼$ pathParts的的var_dump()和$文件?沒有看到代碼產生什麼,我們只能猜測原因。同樣,確保'videos/$ pathParts [filename]'subdir實際存在並且在將東西移入它之前是可寫的。 m_u_f()不會爲你創建目錄。 –

回答

2

通過串聯'/',你告訴Windows它在另一個目錄。所以,該文件正試圖移動到例如「videos/filename/studyId.mp4」。這意味着目錄「文件名」應該存在。如果要使用其他目錄,請使用mkdir,或將斜線更改爲下劃線或其他字符。

0

您正試圖將文件移動到可能不存在的文件夾中。 您的代碼將嘗試將文件移動到這個位置(與filename.txt和1234 $sudId):

videos/filename/1234.txt 

而目錄filename可能不存在的視頻。

你可以先但是創建:

$pathParts = pathinfo($_FILES["sonogram"]["name"]); 
$file = $pathParts['filename'] . '/'. strval($studyId) . '.'. $pathParts['extension']; 
mkdir('videos/'.$pathParts['filename'],0777,TRUE); 
move_uploaded_file($_FILES["sonogram"]["tmp_name"],"videos/". $file);