2014-03-31 76 views
1

我收到以下警告我無法使用php上傳文件?

Warning: copy(file.txt) [function.copy]: failed to open stream: No such 
file or directory in /users/abc/pantry/public_html/index.php on line 5 
Could not copy file! 

<?php 

if ($_FILES['file']['name'] != "") { 
    copy($_FILES['file']['name'], "https://stackoverflow.com/users/abc/pantry/public_html/temp/") or die("Could not copy file!"); 
} else { 
    die("No file specified!"); 
} 
?> 

即使文件夾TEMP內存在與777的權限。

回答

3

你需要在這裏指定文件名:

"https://stackoverflow.com/users/abc/pantry/public_html/temp/" . $_FILES['file']['name'] 

你也應該使用上傳的文件絕對路徑:

$_FILES['file']['tmp_name']

+0

該OP的問題也是,PHP無法找到服務器上的文件的臨時名稱 –

+0

它的工作。謝謝。 – pcoder

1

嘗試:

copy($_FILES['file']['tmp_name'], "https://stackoverflow.com/users/abc/pantry/public_html/temp/{$_FILES['file']['name']}") 

事實上:

$_FILES['file']['tmp_name']包含服務器上文件的臨時名稱;

$_FILES['file']['name']包含上傳文件的原始名稱。

我建議你看看這裏:http://www.php.net/move_uploaded_file

更新:由Pitchinnate的建議,你也應該設置一些文件名檢查,以避免文件覆蓋。 此外,這不是一個很好的主意,讓爲777

+0

您最終可能會用此代碼覆蓋文件。 – Pitchinnate

+0

肯定,但我們不會在這個具體的答案討論有關安全,將有很多談論.. –

+0

同意,這就是爲什麼我沒有投下來,我只是拋出一個忠告。 – Pitchinnate

1

因爲它說Barif你有E指定文件的新新,這裏是從PHP官方文檔

<?php 
$archivo = 'ejemplo.txt'; 
$nuevo_archivo = 'ejemplo.txt.bak'; 

if (!copy($archivo, $nuevo_archivo)) { 
    echo "Error al copiar $archivo...\n"; 
} 
?> 
2

變化的例子中,與複製功能一致

​​3210