文件上传是网站开发中常见的功能之一。本文主要讲解使用 PHP 实现文件上传的完整攻略。
PHP 文件上传全攻略
文件上传是网站开发中常见的功能之一。本文主要讲解使用 PHP 实现文件上传的完整攻略。
文件上传基本流程
实现文件上传的基本流程如下:
- HTML 表单中增加文件上传组件 
<input type="file" name="file">。 - 服务器端接收上传文件,并保存到指定目录。
 - 返回上传结果给客户端。
 
HTML 表单
HTML 表单中需要增加一个文件上传组件,如下:
<form action="upload.php" method="POST" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit" value="上传">
</form>
其中,enctype 属性必须设置为 multipart/form-data,否则文件无法正常上传。
PHP 服务器端处理
PHP 服务器端处理文件上传需要用到 $_FILES 变量,该变量为超全局变量,在处理文件上传时必须使用。
常用的 $_FILES 变量属性
$_FILES 变量包括以下属性:
$_FILES["file"]["name"]- 上传文件的文件名$_FILES["file"]["type"]- 上传文件的 MIME 类型$_FILES["file"]["tmp_name"]- 上传文件的临时存放路径$_FILES["file"]["error"]- 上传文件的错误代码$_FILES["file"]["size"]- 上传文件的大小,单位为字节
其中,$_FILES["file"]["error"] 属性为上传文件的错误代码。常用的错误代码如下:
UPLOAD_ERR_OK- 上传成功UPLOAD_ERR_INI_SIZE- 上传的文件大小超过了php.ini中upload_max_filesize选项限制的大小UPLOAD_ERR_FORM_SIZE- 上传的文件大小超过了<form>标签中MAX_FILE_SIZE选项指定的大小UPLOAD_ERR_PARTIAL- 文件只有部分被上传UPLOAD_ERR_NO_FILE- 没有文件被上传UPLOAD_ERR_NO_TMP_DIR- 找不到临时文件夹UPLOAD_ERR_CANT_WRITE- 文件写入失败UPLOAD_ERR_EXTENSION- PHP 扩展阻止了文件上传
保存上传文件
使用 move_uploaded_file() 函数将文件保存到指定目录中。
例如:
$upload_dir = "/var/www/uploads/";
$filename = $_FILES["file"]["name"];
$tmp_name = $_FILES["file"]["tmp_name"];
move_uploaded_file($tmp_name, $upload_dir . $filename);
示例
下面给出两个示例。
示例一:上传文件并重命名
上传文件并重命名,确保文件名唯一。
$upload_dir = "/var/www/uploads/";
$filename = uniqid() . "-" . $_FILES["file"]["name"];
$tmp_name = $_FILES["file"]["tmp_name"];
move_uploaded_file($tmp_name, $upload_dir . $filename);
uniqid() 函数返回一个唯一的字符串,用于作为新文件名的一部分。
示例二:限制上传文件类型和大小
限制上传文件类型和大小,确保上传的文件符合要求。
$upload_dir = "/var/www/uploads/";
$filename = $_FILES["file"]["name"];
$tmp_name = $_FILES["file"]["tmp_name"];
$allowed_types = array("image/jpeg", "image/png");
$max_size = 1024 * 1024; // 1MB
$error = "";
// 检查文件类型
$filetype = $_FILES["file"]["type"];
if (!in_array($filetype, $allowed_types)) {
  $error = "文件类型不支持";
}
// 检查文件大小
$filesize = $_FILES["file"]["size"];
if ($filesize > $max_size) {
  $error = "文件太大了";
}
// 如果没有错误,保存文件
if (!$error) {
  move_uploaded_file($tmp_name, $upload_dir . $filename);
} else {
  echo "上传失败:" . $error;
}
以上代码中,$allowed_types 变量定义了可上传的文件类型,$max_size 变量定义了最大上传大小。如果上传的文件类型或大小不符合要求,将返回上传失败信息。
总结
通过以上步骤,我们学习了实现 PHP 文件上传的完整攻略。在实现文件上传时,需要注意上传文件类型和大小的限制,确保上传的文件符合要求。
本文标题为:PHP 文件上传全攻略
				
        
 
            
        基础教程推荐
- PHP判断一个字符串是否是回文字符串的方法 2024-01-31
 - PHP手机短信验证码实现流程详解 2022-10-18
 - php实现构建排除当前元素的乘积数组方法 2022-11-23
 - php数组函数序列之array_sum() – 计算数组元素值之和 2024-01-15
 - 设定php简写功能的方法 2023-03-17
 - Yii框架连表查询操作示例 2023-02-13
 - PHP实现抽奖系统的示例代码 2023-06-26
 - php实现数组筛选奇数和偶数示例 2024-02-05
 - PHP实现文件下载【实例分享】 2024-04-27
 - PHP+MySQL+sphinx+scws实现全文检索功能详解 2023-01-31
 
    	
    	
    	
    	
    	
    	
    	
    	
						
						
						
						
						
				
				
				
				