我收到以下警告
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'], "/users/abc/pantry/public_html/temp/") or die("Could not copy file!");
} else {
die("No file specified!");
}
?>
即使文件夹temp以777权限存在。
答案 0 :(得分:3)
您需要在此处指定文件名:
"/users/abc/pantry/public_html/temp/" . $_FILES['file']['name']
此外,您应该使用上传文件的绝对路径:
$_FILES['file']['tmp_name']
答案 1 :(得分:2)
将复制功能的行更改为
copy( $_FILES['file']['tmp_name'], "/users/abc/pantry/public_html/temp/" ) or
die( "Could not copy file!");
答案 2 :(得分:1)
尝试:
copy( $_FILES['file']['tmp_name'], "/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
的权限并不是一个好主意答案 3 :(得分:1)
正如它说Bad如果你必须指定新的文件,这里是php官方文档的例子
<?php
$archivo = 'ejemplo.txt';
$nuevo_archivo = 'ejemplo.txt.bak';
if (!copy($archivo, $nuevo_archivo)) {
echo "Error al copiar $archivo...\n";
}
?>