2011-09-22 152 views
0

我嘗試使用php中的copy()函數一次在服務器中存儲兩個相同的文件,我指定了複製文件的目錄,但它不會轉到目錄我指定哪個是「edituploads」文件夾,而是轉到上傳php scrpit所在的當前目錄。並且我已經使用了copy()函數三次,這是一個問題嗎? 任何人都可以告訴我什麼是錯的,非常感謝。文件上傳到錯誤的目錄

這裏是我的PHP代碼:

if (!empty($_FILES)) 
    { 
     $a = uniqid(); 
     $tempFile = $_FILES['Filedata']['tmp_name']; 
     $targetpath4=$_SERVER['DOCUMENT_ROOT']."/example/upload/edituploads/"; 
     $targetFile = str_replace('//','/',$targetPath) . $a.".jpg"; 
     $targetFile4 = str_replace('//','/',$targetPath4) . $a.".jpg"; 
     move_uploaded_file($tempFile,$targetFile); 
     copy($targetFile, $targetFile4); 
    } 

回答

2

php的複製/移動命令的文件名的基礎上純粹的工作。您不能將目錄指定爲源或目標,因爲它們不在目錄中操作。它不像一個你可以做的外殼

$ cp sourcefile /some/destination/directory/ 

並且系統會很高興地在那個目錄中爲你創建'sourcefile'。你必須指定一個文件名的目標,如:

$ cp sourcefile /some/destination/directory/sourcefile 

除此之外,您的移動指令usign $targetPath,該代碼段沒有定義,所以它會在當前只創建一個$a.jpg文件名工作目錄。

而你的copy()命令使用的是$targetFile4,它基於targetPath3,它也沒有在任何地方定義。

0

您需要先複製文件,然後通過TMP移到另一個目錄。

copy($ tempFile,'somePlace_1'); move_uploaded_file($ tempFile,'somePlace_2');

+0

不相關的,如果OP的代碼工作正常,文件將被移動到'$ targetFile',然後從'$ targetFile'複製。 –

+0

我以爲他試圖從tmp_file中複製文件後,他移動它..但我再次查看他的代碼,它應該工作,如果他從他移動tmp_file的路徑複製它。就像你說的那樣,他們缺少參數。 – Botonomous