php怎么获得上传的文件
时间 : 2023-03-28 13:27:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

在 PHP 中,获得上传的文件需要使用 $_FILES 数组。这个数组包含了上传文件的属性和内容,其中包括文件名称、类型、大小、临时文件路径等信息。

以下是一个简单的示例代码,用于演示如何获得上传的文件:

<form action="upload.php" method="post" enctype="multipart/form-data">

<input type="file" name="fileToUpload" id="fileToUpload">

<input type="submit" value="Upload" name="submit">

</form>

<?php

if(isset($_POST["submit"])) {

$target_dir = "uploads/"; // 上传文件所保存的目录

$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); // 获取上传文件在服务器上所保存的文件名

$uploadOk = 1;

$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION)); // 获取上传文件的后缀名

// 校验上传文件的大小

if ($_FILES["fileToUpload"]["size"] > 500000) {

echo "Sorry, your file is too large.";

$uploadOk = 0;

}

// 校验上传文件的格式

if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"

&& $imageFileType != "gif" ) {

echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";

$uploadOk = 0;

}

// 判断是否上传成功

if ($uploadOk == 0) {

echo "Sorry, your file was not uploaded.";

} else {

if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {

echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";

} else {

echo "Sorry, there was an error uploading your file.";

}

}

}

?>

在上述代码中,首先需要使用表单让用户上传文件,即在 HTML 中使用 `<input>` 标签的 `type` 属性设置为 "file"。当用户提交表单后,判断 `$_POST["submit"]` 是否存在,确定上传操作是否完成。

接着,在 PHP 中使用 `move_uploaded_file()` 函数来将文件从临时目录移动到指定的目录,并生成一个新的文件名。在此过程中,可能需要先对上传文件进行一些合法性校验,例如校验文件的大小、格式等。

最后,如果文件上传成功,则在页面上输出上传成功的提示信息;否则,输出上传失败的提示信息。

总之,使用 $_FILES 数组来获得上传的文件是相对简单和常用的操作,开发者可以根据实际需求和具体场景进行相关配置和优化。

在 PHP 中,你可以使用超全局变量 `$_FILES` 来获取上传的文件。

$_FILES是一个关联数组,其键是`<input type="file">`标记的name属性值。对于上传的文件,$_FILES 接收到的变量的结构如下所示:

Array

(

[name] => mypicture.jpg

[type] => image/jpeg

[size] => 218282

[tmp_name] => /path/to/tmp/file/on/server

[error] => 0

)

- `name`:上传文件的原始名称

- `type`:上传文件的 MIME 类型

- `size`:上传文件的大小,单位为字节

- `tmp_name`:上传文件在服务器上的临时存储位置,需要在代码中将其移动到指定位置,否则上传的文件只会在临时文件夹中存在,而不是目标位置

- `error`:上传文件时遇到的错误代码,0 表示没有错误

接下来是如何在 PHP 中获取上传的文件:

```php

<?php

if ($_FILES["file"]["error"] > 0) { // 判断是否出错

echo "Error: " . $_FILES["file"]["error"] . "<br>";

} else {

echo "Upload: " . $_FILES["file"]["name"] . "<br>";

echo "Type: " . $_FILES["file"]["type"] . "<br>";

echo "Size: " . ($_FILES["file"]["size"] / 1024) . "KB<br>";

echo "Stored in: " . $_FILES["file"]["tmp_name"];

}

?>

在上面的代码中, `$_FILES["file"]["error"]` 判断文件是否上传成功,如果 `$_FILES["file"]["error"]` 的值大于 0,表示上传失败,具体的错误信息可以根据错误代码来判断。如果上传成功,就可以通过 `$_FILES` 数组中的其余元素来获取文件的信息,在这里可以根据需要进行处理,例如将文件移动到目标位置等。

需要注意的是,在使用 `move_uploaded_file()` 函数将临时文件存储到目标位置时,需要确保目标文件夹有可写权限,否则无法将文件存储到目标位置。