copy()和move_uploaded_file()
之间有什么区别
我认为这两个函数执行相同的操作然后会有什么区别?
copy ( $_FILES['file']['tmp_name'],
"C:/Apache/htdocs/" . $_FILES['file']['name'] )
move_uploaded_file($_FILES['file']['tmp_name'],
"C:/Apache/htdocs/" . $_FILES['file']['name'])
答案 0 :(得分:13)
此函数检查以确保filename指定的文件是 一个有效的上传文件(意思是它是通过PHP的HTTP POST上传的 上传机制)。如果文件有效,它将被移动到 目的地给出的文件名。
如果有任何机会,这种检查尤其重要 任何完成上传文件的内容都可以将其内容透露给 用户,甚至是同一系统上的其他用户。
http://php.net/manual/en/function.move-uploaded-file.php
如果filename不是有效的上传文件,则不会执行任何操作,并且 move_uploaded_file()将返回FALSE。
答案 1 :(得分:3)
复制会将文件来源复制到目的地,而移动会移动它。
复制文件时,复制是指不清除临时缓冲区(源)。
当您移动文件时,它会从原始位置删除,意味着在临时缓冲区中(来源:$ _FILES)并将文件移动到目的地。
答案 2 :(得分:0)
为补充@Muhammad Hasan Khan的答案。
根据此评论https://www.php.net/manual/en/function.is-uploaded-file.php#113766,与 is_uploaded_file 相比, move_uploaded_file 带来的安全性更高,因此,以下两个摘要在安全性方面严格相同:
$tmp = $_FILES['file']['tmp_name'];
if(false === is_uploaded_file($tmp)){
return false;
}
copy($tmp, $dst);
$tmp = $_FILES['file']['tmp_name'];
move_uploaded_file($tmp, $dst);