我无法使用PHP上传文件?

时间:2014-03-31 14:46:48

标签: 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'], "/users/abc/pantry/public_html/temp/") or die("Could not copy file!");
} else {
    die("No file specified!");
}
?>

即使文件夹temp以777权限存在。

4 个答案:

答案 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";
}
?>