前端代码
<?php
require 'uploads.php';
(new Uploads)->upload('pic', 'uplosd');
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>文件上传 </title>
</head>
<body>
<form action="" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>文件上传</legend>
<input type="hidden" name="MAX_FILES_SIZE" value="500000">
<input type="file" name="pic[]" id="file" multiple>
<button>上传</button>
</fieldset>
</form>
</body>
</html>
Uploads.php
<?php
class Uploads
{
protected $filesname;
public function upload($name, $past){
$this->filesname = $name;
// 判断上传的文件是否成功
if($_FILES[ $this->filesname]){
foreach($_FILES[$this->filesname]['error'] as $key=>$value){
if($value === 0){
// 临时文件名
$tmpFileName = $_FILES[$this->filesname]['tmp_name'][$key];
// 原始文件名
$originalFileName =$_FILES[$this->filesname]['name'][$key];
// 目标文件名
$destFileName = $past.md5($originalFileName);
// 移动文件:第一个参数:要移动的文件。第二个参数:目标文件名
move_uploaded_file($tmpFileName,$destFileName);
// 预览
echo "<img src='{$destFileName}' width='100'>";
echo "文件上传成功";
}else{
echo '文件上传失败';
}
}
}
}
}
?>
效果图
总结
- 第一次尝试封装类,感觉类的封装增加了程序的简洁、清晰,实现了代码的复用。
- 文件上传时前端form必须是POST方式上传,method=”POST” enctype=”multipart/form-data”,而且表单发送前的编码方式必须是二进制编码。