move_uploaded_file() 函数和 rename() 函数用于将文件移动到云服务器上的不同文件夹中。在这种情况下,我们已经在服务器的临时目录中上传了一个文件,该方法从该目录中分配了新目录。文件 temp 已完全移动到新位置。move_uploaded_file() 仅允许移动通过 PHP 上传的文件,从而确保此操作的安全性。因此,要移动已经上传的文件,我们使用 rename() 方法。
句法:
move_uploaded_file (string $Sourcefilename, string $destination) : bool
重命名(字符串 $oldname,字符串 $newname [,资源 $context]):bool
move_upload_file() 方法:此函数检查以确保源文件或语法中的“$Sourcefilename”是有效的上传文件(意味着它是通过 PHP 的 HTTP POST 上传机制上传的)。如果文件有效,它将被移动到由destination 或语法中的'$destination' 给出的文件名。
如果对上传文件进行的任何操作都可能向用户甚至同一系统上的其他用户泄露其内容,则这种检查尤为重要。请注意,如果目标文件已经存在,它将被覆盖。由于这个原因,应首先检查文件的可用性,然后必须采取唯一的措施。
rename() 方法:此方法尝试将 oldname 重命名为 newname,必要时在目录之间移动它。如果 newname 文件存在,那么它将被覆盖。如果存在重命名新名称目录,则此函数将发出警告。
示例:此示例是一个代码,它在名为 Uploads 的目录中上传一个文件,然后将其路径更改为另一个名为 New 的目录。
上传.HTML
<!DOCTYPE html>
<html>
<head>
<title>
Move a file into a different
folder on the server
</title>
</head>
<body>
<form action="upfile.php" method="post"
enctype="multipart/form-data">
<input type="file" name="file" id="file">
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
</body>
</html>
上传文件.php
<?php
// The target directory of uploading is uploads
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$uOk = 1;
if(isset($_POST["submit"])) {
// Check if file already exists
if (file_exists($target_file)) {
echo "file already exists.<br>";
$uOk = 0;
}
// Check if $uOk is set to 0
if ($uOk == 0) {
echo "Your file was not uploaded.<br>";
}
// 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.<br>";
// Moving file to New directory
if(rename($target_file, "New/".
basename( $_FILES["file"]["name"]))) {
echo "File moving operation success<br>";
}
else {
echo "File moving operation failed..<br>";
}
}
else {
echo "Sorry, there was an error uploading your file.<br>";
}
}
}
注意:目录 Uploads 和 New 已经存在一次,因此如果它们在服务器中不可用,则必须创建它们。
重要方法: