如何使用PHP将文件移动到服务器上的不同文件夹中?
move_uploaded_file()函数和 rename()函数用于将文件移动到服务器上的不同文件夹中。在这种情况下,我们已经在服务器的临时目录中上传了一个文件,该方法从中分配了新目录。文件 temp 完全移动到新位置。 move_uploaded_file() 通过只允许移动通过PHP上传的文件来确保此操作的安全性。因此,要移动已上传的文件,我们使用 rename() 方法。
句法:
move_uploaded_file ( string $Sourcefilename, string $destination ) : bool
rename ( string $oldname, string $newname [, resource $context ] ) : bool
- move_upload_file() 方法:此函数检查以确保源文件或语法中的“$Sourcefilename”是有效的上传文件(意味着它是通过 PHP 的 HTTP POST 上传机制上传的)。如果文件有效,它将被移动到由目标或语法中的 '$destination' 指定的文件名。
如果对上传的文件所做的任何操作都可能将其内容泄露给用户,甚至同一系统上的其他用户,那么这种检查就尤为重要。请注意,如果目标文件已经存在,它将被覆盖。由于这个原因,应该首先检查文件的可用性,然后必须采取唯一的行动。 - rename() 方法:此方法尝试将旧名称重命名为新名称,并在必要时在目录之间移动它。如果 newname 文件存在,那么它将被覆盖。如果存在重命名 newname 目录,则此函数将发出警告。
示例:此示例是一个代码,它在名为 Uploads 的目录中上传文件,然后将其路径更改为另一个名为 New 的目录。
上传.html
Move a file into a different
folder on the server
上传文件。 PHP
";
$uOk = 0;
}
// Check if $uOk is set to 0
if ($uOk == 0) {
echo "Your file was not uploaded.
";
}
// if uOk=1 then try to upload file
else {
// $_FILES["file"]["tmp_name"] implies storage path
// in tmp directory which is moved to uploads
// directory using move_uploaded_file() method
if (move_uploaded_file($_FILES["file"]["tmp_name"],
$target_file)) {
echo "The file ". basename( $_FILES["file"]["name"])
. " has been uploaded.
";
// Moving file to New directory
if(rename($target_file, "New/".
basename( $_FILES["file"]["name"]))) {
echo "File moving operation success
";
}
else {
echo "File moving operation failed..
";
}
}
else {
echo "Sorry, there was an error uploading your file.
";
}
}
}
?>
注意: Uploads 和 New 目录已经存在一次,因此如果它们在服务器内不可用,您将不得不创建它们。
代码运行:
使用重命名方法运行的代码(移至新)
重要方法:
- file_exists($target_file):该方法用于检查路径是否存在。如果存在则返回真,否则返回假。
- basename( $_FILES[“file”][“name”] ):该方法用于获取所选文件的名称,其特殊之处在于它对用户提供的输入字符串进行操作,并且不知道实际文件系统并提供浏览器提供的安全功能的使用。