在PHP中移动上传文件的最佳方法?

时间:2009-08-15 19:48:17

标签: php

我有一个php脚本,当用户上传照片时会使用以下内容:

if (is_uploaded_file($HTTP_POST_FILES['picture1']['tmp_name'])) {
   move_uploaded_file($HTTP_POST_FILES['picture1']['tmp_name'], $full_file_path);
}

我很好奇,我应该使用它吗?如果是这样,有什么好处吗?

if (is_uploaded_file($HTTP_POST_FILES['picture1']['tmp_name'])) {
   copy($HTTP_POST_FILES['picture1']['tmp_name'], $full_file_path);
}

当脚本结束时,文件位于@ $ HTTP_POST_FILES ['picture1'] ['tmp_name']自动删除?

2 个答案:

答案 0 :(得分:5)

move_uploaded_file有一些好处,就像它检查以确保该文件是有效的上传文件一样,这很重要:

  

如果上传文件中的任何内容都可能向用户显示其内容,甚至向同一系统上的其他用户显示内容,则此类检查尤其重要。 - PHP文档

此外,您只需移动它,而不是复制数据。这意味着创建的整体数据更少。

第二个问题:是的,脚本完成后会删除该文件,这意味着除非您移动它,否则PHP无法访问它。

答案 1 :(得分:3)

首先,您应该使用$_FILES而不是$HTTP_POST_FILES。后者已被弃用,自PHP 6起将从PHP平台中删除。

其次,使用move_uploaded_file(),因为与copy()相比,它会执行额外的安全性检查。我不确切地知道这意味着什么,只有that's what the manual says