欢迎访问宙启技术站
智能推送

PHP中的文件上传函数,使用方法及实例详解

发布时间:2023-06-19 11:42:06

文件上传是Web开发中经常遇到的一种需求,比如我们经常用的头像上传、图片上传、文件上传等等。PHP中提供了一些函数来方便实现文件上传功能。

### 一、文件上传的必要条件

在开始使用PHP文件上传函数前,需要有以下的必要条件:

1. 配置PHP.ini文件中的上传配置项。主要是: file_uploads、upload_max_filesize、post_max_size、upload_tmp_dir、max_file_uploads。

2. 在HTML表单中增加一个file类型的input元素,并允许method="POST"的提交。

3. PHP脚本中使用$_FILES数组来获取上传的文件信息。

### 二、PHP文件上传函数

1. move_uploaded_file() 函数

这个函数是PHP用来从临时文件夹移动文件到指定位置的。语法如下:

bool move_uploaded_file ( string $filename , string $destination )

其中,$filename是上传时产生的临时文件名,$destination是目标路径。

实例1:

在HTML表单中新增一个file类型的input元素,然后在PHP脚本中调用move_uploaded_file()函数,移动文件到指定的目录中。

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload" name="submit">
</form>

$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
    echo "Sorry, there was an error uploading your file.";
}

实例2:

在HTML表单中增加多个file类型的input元素,然后在PHP脚本中将所有文件遍历,移动到指定的目录中。

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload[]" id="fileToUpload1"><br>
  Select image to upload:
  <input type="file" name="fileToUpload[]" id="fileToUpload2"><br>
  <input type="submit" value="Upload" name="submit">
</form>

$target_dir = "uploads/";
$count = 0;
foreach($_FILES['fileToUpload']['name'] as $file){
    $target_file = $target_dir . basename($file);    
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"][$count], $target_file)) {
        echo "The file ". basename($file). " has been uploaded.<br>";
    } else {
        echo "Sorry, there was an error uploading your file.<br>";
    }
    $count++;
}

2. is_uploaded_file() 函数

这个函数用来检查指定的文件是否是通过HTTP POST上传的文件。语法如下:

bool is_uploaded_file ( string $filename )

其中,$filename是被检查的文件名。

实例:

if (is_uploaded_file($_FILES['fileToUpload']['tmp_name'][$i])) {
    echo "File " . $_FILES['fileToUpload']['name'][$i] . " is a valid upload file.<br>";
} else {
    echo "File " . $_FILES['fileToUpload']['name'][$i] . " is not a valid upload file.<br>";
}

3. unlink() 函数

这个函数用来删除服务器上的文件。语法如下:

bool unlink ( string $filename [, resource $context ] )

其中,$filename是被删除的文件路径,$context是文件打开时的资源句柄。

实例:

if (unlink($target_file)) {
    echo "The file ". basename($file). " has been deleted.<br>";
} else {
    echo "Sorry, there was an error deleting your file.<br>";
}

### 三、总结

以上是PHP中常用的文件上传函数,掌握它们可以帮助我们更轻松地开发Web应用。但同时也需要注意文件上传的安全问题,比如文件类型、文件大小、重名等问题都需要注意。