开发者社区> 问答> 正文

为什么php上传文件要使用move_uploaded_file?

似乎教程里都是这么告诉我们的,在php里移动上传的文件要用move_uploaded_file,但是为什么非要使用这个函数来移动上传的文件呢?

上传文件的地址不是在$_FILES数组的tmp_name里面吗?而且我测试过,用一般的文件函数,像renamefile_get_contents之类的,都可以操作这个文件,那么不使用这个函数到底有什么坏处呢?

展开
收起
落地花开啦 2016-06-13 13:56:41 2559 0
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    文件作为一种特殊的表单数据,通过http post请求方式提交至服务器的时候,php会生成一个$_FILES全局数组,相关的文件信息会存放在这个全局数组中。所上传的文件保存在一个临时目录中。

    那么,对上传的文件进行合法性,安全性等进行验证以后,再通过move_uploaded_file函数将文件移动到服务器上的对应目录。

    事实上也可以通过copy来将函数文件复制到对应的目录,只要确定了上传文件的合法性以及安全性。类似下面的代码:

    //先用copy函数,如果失败,使用move_uploaded_file
    if ( ! @copy($temp_file, $upload_path.$file_name))
            {
                if ( ! @move_uploaded_file($temp_file, $upload_path.$file_name))
                {
                    return FALSE;
                }
            }
    2019-07-17 19:35:47
    赞同 展开评论 打赏
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载