PHP $_FILES函数详解
PHP中的$_FILES函数用于从上传的文件中获取信息。它可以让我们访问上传文件的名称、类型、大小、临时文件名和编码等信息。
上传文件表单
要用$_FILES函数处理上传的文件,我们需要先在HTML表单中添加一个"file"类型的表单元素,使用户可以将文件选择其中并上传到我们的服务器:
<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
这些代码中,enctype属性指定了表单类型为multipart/form-data,这是因为文件必须以这种方式上传。 action属性指定了表单提交到的处理脚本的URL。
$_FILES数组
一旦我们上传了文件,所有的上传文件信息都存在于"$_FILES"数组中。该数组的键名由表单中元素的"name"属性决定。
1.获取文件信息
以下代码展示了如何从$_FILES数组中获取上传文件的信息:
print_r($_FILES["fileToUpload"]);
输出结果类似于这个样子:
Array
(
[name] => myFile.txt
[type] => text/plain
[tmp_name] => /tmp/php/php1h4j1o
[error] => UPLOAD_ERR_OK
[size] => 123
)
其中,"name"表示文件的原始名称,"type"表示文件的类型,"tmp_name"表示文件的临时名称,"error"表示文件上传过程中是否出错,"size"表示文件的大小(以字节为单位)。
2.上传文件到服务器
以下代码展示了如何将上传的文件从临时目录移动到指定的目录:
$targetDirectory = "uploads/";
$targetFile = $targetDirectory . basename($_FILES["fileToUpload"]["name"]);
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $targetFile)) {
echo "The file ". basename( $_FILES["fileToUpload"]["name"]). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
在这个例子中,我们定义了一个$targetDirectory变量表示目标目录的路径,$targetFile变量表示上传文件在目标目录中的命名。
move_uploaded_file()
函数用于将上传的文件从临时目录移动到目标目录。
注意事项
-
在接收上传文件的PHP页面的最顶端,一定要输出header头,否则$_FILES将返回空数组。
-
默认情况下,PHP设置文件上传最大大小为2MB。如果上传的文件大小超过了这个限制,将会引发系统错误。可以通过修改php.ini文件中的"upload_max_filesize" 和 "post_max_size" 两个参数来修改文件大小上传限制。
-
上传的文件大小使用的是字节(byte)的单位,需要将其转换为MB或GB时,可以使用以下代码:
$fileSizeInMB = ($_FILES["fileToUpload"]["size"] / (1024*1024));
$fileSizeInGB = ($_FILES["fileToUpload"]["size"] / (1024*1024*1024));
示例
示例1: 上传单个文件并获取文件的基本信息
<?php
echo "<h1>Upload a file and show its basic information:</h1>";
if (isset($_POST['submit'])) {
print_r($_FILES["fileToUpload"]);
}
?>
<form action="" method="post" enctype="multipart/form-data">
<label for="fileToUpload">Select a file to upload:</label>
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
在这个示例中,我们只是简单的展示了上传文件的基本信息。当用户点击了"Upload File"按钮并上传成功时,它将会打印上传的文件的各个参数。
示例2: 上传文件并将文件保存到服务器
<?php
echo "<h1>Upload and save file to server:</h1>";
if(isset($_FILES['fileToUpload']))
{
$errors= array();
$file_name = $_FILES['fileToUpload']['name'];
$file_size =$_FILES['fileToUpload']['size'];
$file_tmp =$_FILES['fileToUpload']['tmp_name'];
$file_type=$_FILES['fileToUpload']['type'];
$file_ext=strtolower(end(explode('.',$_FILES['fileToUpload']['name'])));
$extensions= array("jpeg","jpg","png");
if(in_array($file_ext,$extensions)=== false){
$errors[]="extension not allowed, please choose a JPEG,PNG or JPG file.";
}
if($file_size > 2097152){
$errors[]='File size must be less or equal to 2 MB';
}
if(empty($errors)==true){
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
move_uploaded_file($file_tmp,$target_file);
echo "The file ".$file_name." has been uploaded.";
}else{
echo implode(',', $errors);
}
}
?>
<form action="" method="post" enctype="multipart/form-data">
<label for="fileToUpload">Select a file to upload:</label>
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload File" name="submit">
</form>
在这个示例中,当用户点击"Upload File"按钮并上传成功时,将会把上传的文件保存到服务器的指定目录中。如果上传失败,它将会打印出错误信息并结束。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP $_FILES函数详解 - Python技术站