# move_uploaded_file

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

move_uploaded_file — 将上传的文件移动到新位置

### 说明

move_uploaded_file(string `$from`, string `$to`): bool

本函数检查并确保由 `from` 指定的文件是合法的上传文件（即通过 PHP 的 HTTP POST 上传机制所上传的）。如果文件合法，则将其移动为由 `to` 指定的文件。

这种检查显得格外重要，如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

### 参数

`from`

  上传的文件的文件名。

`to`

  移动文件到这个位置。

### 返回值

成功时返回 `true`。

如果 `from` 不是合法的上传文件，不会出现任何操作，move_uploaded_file() 将返回 `false`。

如果 `from` 是合法的上传文件，但出于某些原因无法移动，不会出现任何操作，move_uploaded_file() 将返回 `false`。此外还会发出一条警告。

### 示例

示例 #1 Uploading multiple files

`<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
// basename() 可以防止遍历攻击文件系统；
// 进一步验证/清理文件名可能是合适的
$name = basename($_FILES["pictures"]["name"][$key]);
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
?>`

### 注释

> 注意:

> move_uploaded_file() 对 open_basedir 是敏感的。不过，限制只针对 `to` 路径，因为允许移动上传的文件名 `from` 可能会与这些限制产生冲突。move_uploaded_file() 仅作用于通过 PHP 上传的文件以确保这个操作的安全性。

警告

如果目标文件已经存在，将会被覆盖。

### 参见

- is_uploaded_file() - 判断文件是否是通过 HTTP POST 上传的
- rename() - 重命名一个文件或目录
- 参见文件上传处理一章中的简单使用例子。

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open