php文件上传代码怎么写
时间 : 2023-03-28 14:44:02声明: : 文章内容来自网络,不保证准确性,请自行甄别信息有效性

PHP 文件上传是很常见的功能之一。通过文件上传,用户可以将自己的文件上传到服务器上,这样服务器就可以处理这些文件了。本文将为大家介绍如何使用PHP实现文件上传。

首先,需要创建一个HTML表单,以便用户可以选择要上传的文件。表单包含一个file类型的input元素。如下所示:

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

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

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

</form>

上面的代码中,form标签的action属性指定了文件上传的PHP文件,并且enctype属性必须设置为multipart/form-data ,这是因为浏览器必须知道表单中包含了一个文件上传。

当用户点击上传按钮时,将向指定的PHP文件提交表单。在PHP文件中,可以使用$_FILES超全局变量来处理上传的文件。该变量是一个关联数组,包含了上传文件的相关信息。

下面是一个最基本的PHP文件上传代码:

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

$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

$uploadOk = 1; //上传是否成功的标志

//检查上传文件的类型

if ($_FILES["fileToUpload"]["type"] != "image/png") {

echo "只允许上传PNG格式的图片!";

$uploadOk = 0;

}

//检查上传文件的大小

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

echo "文件过大,请上传小于500KB的文件!";

$uploadOk = 0;

}

//判断是否上传成功

if ($uploadOk == 0) {

echo "上传失败!";

} else {

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

echo "文件上传成功,文件名为:" . basename($_FILES["fileToUpload"]["name"]);

} else {

echo "上传失败!";

}

}

上面的代码中,首先确定了上传文件的保存目录,然后使用basename()函数获取上传文件的文件名,并使用$target_dir和$target_file变量确定文件在服务器中的保存路径。接着,检查上传文件的类型和大小,如果不符合要求,就设置$uploadOk变量的值为0,表示上传失败。最后,move_uploaded_file()函数将文件从临时目录移动到指定的文件保存路径,并在上传成功时输出上传的文件名。

以上就是一个简单的PHP文件上传代码。当然,为了使文件上传更加安全,还需要进行更严格的校验和限制。

在PHP中,文件上传需要使用`$_FILES`数组和相关函数来实现。下面我们来分步骤演示。

## 1. HTML表单

首先,在HTML表单中添加`enctype="multipart/form-data"`属性。这个属性表示表单数据包含文件。同时,文件上传需要使用`<input type="file">`元素。

## 2. PHP处理

在服务器端,上传后的文件会被保存到临时目录中。我们需要使用`move_uploaded_file()`函数将其移动到指定目录下。

```php

$target_dir = "uploads/";

$target_file = $target_dir . basename($_FILES["file"]["name"]);

$uploadOk = 1;

$imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));

// 判断是否为真实图片

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

$check = getimagesize($_FILES["file"]["tmp_name"]);

if($check !== false) { // 为真实图片

$uploadOk = 1;

} else { // 不是真实图片

echo "文件不是图片";

$uploadOk = 0;

}

}

// 文件上传

if ($uploadOk == 0) {

echo "文件上传失败";

} else {

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

echo "文件上传成功:". basename($_FILES["file"]["name"]);

} else {

echo "文件上传失败";

}

}

以上代码中,`$target_dir`表示上传文件的目标目录,`$target_file`表示上传文件的完整路径和文件名,`$uploadOk`用于判断文件是否可以上传,`$imageFileType`表示文件的类型。接下来,通过`getimagesize()`函数判断是否为真实图片,若不是则直接返回错误信息,若是则可以执行上传操作。最后通过`move_uploaded_file()`函数将文件从临时目录移动到目标目录。

## 3. 文件类型限制

PHP限制上传文件类型有`$_FILES`数组里的`type`参数,也可以在服务器配置文件中限制。前者无法保证上传文件的类型安全,而后者对所有文件上传都做了限制。为了更加灵活地限制文件类型,可以在PHP中自行判断文件类型,如上文中的代码所示。

## 4. 文件大小限制

在PHP中,上传文件的大小可以通过`upload_max_filesize`和`post_max_size`配置项进行限制。如果超过了限制,上传失败并返回错误信息。