2014-03-31 77 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