PHP中的文件上传函数,使用方法及实例详解
文件上传是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应用。但同时也需要注意文件上传的安全问题,比如文件类型、文件大小、重名等问题都需要注意。
