1、在HTML表单中设置enctype属性为"multipart/form-data",表示表单数据以多部分形式进行提交,可以上传文件。
<form action="upload.php" method="POST" enctype="multipart/form-data"> <input type="file" name="fileToUpload"> <input type="submit" name="submit" value="上传文件"> </form>
2、在PHP文件中使用$_FILES数组来获取上传的文件信息,包括文件名、临时文件名、文件大小、文件类型等。需要注意的是,$_FILES数组中的键名是由表单中的元素的name属性决定的。
$file_name = $_FILES["fileToUpload"]["name"]; $file_tmp = $_FILES["fileToUpload"]["tmp_name"]; $file_size = $_FILES["fileToUpload"]["size"]; $file_type = $_FILES["fileToUpload"]["type"];
3、检查上传文件的类型和大小是否符合要求。可以使用$_FILES数组中的"error"元素来判断是否上传成功,如果为0,则表示上传成功,否则会有不同的错误码。
if ($_FILES["fileToUpload"]["error"] > 0) { echo "上传文件出错了:" . $_FILES["fileToUpload"]["error"]; } else if($file_type != "image/jpeg" && $file_type != "image/png" && $file_type != "image/gif") { echo "只允许上传JPG、PNG、GIF格式的文件"; } else if($file_size > 1000000) { echo "上传文件的大小不能超过1MB"; } else { // 上传文件到服务器代码 }
4、将上传的文件从临时目录移动到服务器指定的目录中。可以使用move_uploaded_file函数来实现。需要注意的是,上传的文件会被重命名为一个唯一的文件名,以保证不会覆盖已有的文件。
$target_dir = "uploads/"; // 上传文件保存的目录 $target_file = $target_dir . uniqid() . "_" . basename($file_name); // 生成唯一的文件名 if (move_uploaded_file($file_tmp, $target_file)) { echo "文件上传成功,保存路径为:" . $target_file; } else { echo "文件上传失败"; }