1. 单文件上传
效果图如下:
代码如下:
//单文件上传
// print_r($_FILES);
//1.上传文件不能为空
if (isset($_FILES['tupian'])) {
// 获取到当前的图片原始名
$name = $_FILES['tupian']['name'];
// 获取到临时文件名
$tmpName = $_FILES['tupian']['tmp_name'];
// 获取上传错误
$error = $_FILES['tupian']['error'];
//判断是否上传错误
//当error大于0的时候就是有错误
if ($error > 0) {
//使用switch判断
$cw = '<p style="color:red">上传失败错误原因:</p>';
switch ($error) {
//当错误为1时....
case 1:
$cw .= '文件过大超过配置文件限制大小';
break;
case 2:
$cw .= '要上传的文件大小超出浏览器限制';
break;
case 3:
$cw .= '文件仅部分被上传';
break;
case 4:
$cw .= '没有找到要上传的文件';
break;
case 5:
$cw .= '服务器临时文件夹丢失';
break;
case 6:
$cw .= '文件写入到临时文件夹出错';
break;
case 7:
$cw .= '文件写入失败,请检查目录权限';
break;
}
echo $cw;
} else {
//没有错误继续进行操作
//当没有错误的时候 先进行判断文件上传是否合法POST
// is_uploaded_file:判断文件是否是通过 POST 上传的
if (is_uploaded_file($tmpName)) {
//如果是继续判断文件类型是否正确
$hz = ['jpg', 'png', 'gif', 'jpeg', 'webp'];
//拿到文件名后缀
$houzhui = pathinfo($name)['extension'];
//in_array用来查询数组中是否存在某个元素
if (in_array($houzhui, $hz)) {
// 如果合法那么继续上传
//创建目录名称等会将临时文件移动到指定目录
$path = 'images/';
//防止重复名 使用md5加密原文件名+时间戳
$mz = $path . md5($name) . time() . '.' . $houzhui;
//将临时文件上传到指定目录
// move_uploaded_file:将上传的文件移动到新位置
if (move_uploaded_file($tmpName, $mz)) {
//上传成功之后打印即可
echo '上传成功';
echo "<img src='$mz' width='100'/>";
}
} else {
echo '文件类型不存在';
}
} else {
echo '非法上传';
}
}
}
?>
<body>
<form action="" method="post" enctype="multipart/form-data">
<fieldset>
<legend>单文件上传</legend>
<input type="file" name="tupian">
<button>上传</button>
</fieldset>
</form>
</body>
2. 多文件上传-1
效果图如下:
代码如下:
<?php
//多文件上传
// printf('<pre>%s</pre>', print_r($_FILES, true));
//使用foreach遍历
foreach($_FILES as $file){
//判断是否为有错误 如果等于0就代表上传成功开始处理
if($file['error'] === 0){
if (is_uploaded_file($file['tmp_name'])) {
//如果是继续判断文件类型是否正确
$hz = ['jpg', 'png', 'gif', 'jpeg', 'webp'];
//拿到文件名后缀
$houzhui = pathinfo($file['name'])['extension'];
//in_array用来查询数组中是否存在某个元素
if (in_array($houzhui, $hz)) {
// 如果合法那么继续上传
//创建目录名称等会将临时文件移动到指定目录
$path = 'images/';
//防止重复名 使用md5加密原文件名+时间戳
$mz = $path . md5($file['name']) . time() . '.' . $houzhui;
//将临时文件上传到指定目录
// move_uploaded_file:将上传的文件移动到新位置
if (move_uploaded_file($file['tmp_name'], $mz)) {
//上传成功之后打印即可
echo '上传成功';
echo "<img src='$mz' width='100'/>";
}
} else {
echo '文件类型不存在';
}
} else {
echo '非法上传';
}
//将文件移入到指定目录
}
}
?>
<body>
<form action="" method="post" enctype="multipart/form-data">
<fieldset>
<legend>多文件上传1-逐条上传</legend>
<input type="file" name="tupian">
<input type="file" name="tupian1">
<input type="file" name="tupian2">
<button>上传</button>
</fieldset>
</form>
</body>
3.多文件上传-批量上传
效果图如下:
代码如下:
<?php
//多文件上传
// printf('<pre>%s</pre>', print_r($_FILES, true));
//判断是否为空
if (isset($_FILES['tupian'])) {
// 使用循环遍历
foreach($_FILES['tupian']['error'] as $k=>$error){
if($error === UPLOAD_ERR_OK){
$name = $_FILES['tupian']['name'][$k];
$tmpName = $_FILES['tupian']['tmp_name'][$k];
if (is_uploaded_file($tmpName)) {
$hz = ['jpg', 'png', 'gif', 'jpeg', 'webp'];
//拿到文件名后缀
$houzhui = pathinfo($name)['extension'];
//in_array用来查询数组中是否存在某个元素
if (in_array($houzhui, $hz)) {
// 如果合法那么继续上传
//创建目录名称等会将临时文件移动到指定目录
$path = 'images/';
//防止重复名 使用md5加密原文件名+时间戳
$mz = $path . md5($name) . time() . '.' . $houzhui;
//将临时文件上传到指定目录
// move_uploaded_file:将上传的文件移动到新位置
if (move_uploaded_file($tmpName, $mz)) {
//上传成功之后打印即可
echo '上传成功';
echo "<img src='$mz' width='100'/>";
}
} else {
echo '文件类型不存在';
}
} else {
echo '非法上传';
}
}
}
}
?>
<body>
<form action="" method="post" enctype="multipart/form-data">
<fieldset>
<legend>多文件上传-批量上传</legend>
<input type="file" name="tupian[]" multiple>
<button>上传</button>
</fieldset>
</form>
</body>