/index.html 前端页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传文件</title>
<link rel="stylesheet" href="https://www.layuicdn.com/layui/css/layui.css">
</head>
<body>
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
<legend>文件上传</legend>
</fieldset>
<!--文件上传的提交类型必须为post-->
<form class="layui-form" action="upload.php" method="post" enctype="multipart/form-data">
<div class="layui-form-item">
<label class="layui-form-label">选择文件</label>
<div class="layui-input-block">
<!-- name:会成为php中的$_FILES['my_file']-->
<input type="file" name="my_file" class="layui-input">
</div>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn">上传</button>
</div>
</div>
</form>
</body>
</html>
\upload.php
<?php
//设置可上传的文件格式
$fileType = ['txt','zip','png','gif'];
//设置上传文件大小字节//大小设置10mb
$fileSize = 10485760;
//设置上传到的目录
$filePath = '/upload/';
//原文件名
$fileName = $_FILES['my_file']['name'];
//临时文件名
$tempFile = $_FILES['my_file']['tmp_name'];
//判断是否上传成功 和 上传错误信息
$uploadError = $_FILES['my_file']['error'];
if ($uploadError > 0 ){
switch ($uploadError){
case 1: die('上传文件大小超出PHP配置文件约定值 错误代码:' . $uploadError);
case 2: die('上传文件大小超出HTML约定值 错误代码:' . $uploadError);
case 3: die('上传文件不完整,部分被上传成功 错误代码:' . $uploadError);
case 4: die('没有上传任何文件 错误代码:' . $uploadError);
default: die('未知错误 错误代码:' . $uploadError );
}
}
//判断上传文件扩展名是否支持
//设置取最后一个数值
$extensions = explode('.',$fileName);
$extension = end($extensions);
if (!in_array($extension,$fileType)){
die('不允许上传' .$extension .'文件格式');
}
//$extension = explode('.', $fileName)[1];
//if (!in_array($extension, $fileType)) {
// die('不允许上传 ' . $extension . '文件类型');
//}
//上传临时文件名 防止重复
$fileName = date('YmdHis',time()).md5(mt_rand(1,999)) . '.' . $extension;
//开始上传
if (is_uploaded_file($tempFile)){
if (move_uploaded_file($tempFile, __DIR__ . $filePath . $fileName)){
echo '上传成功 文件链接为: ' . $_SERVER['HTTP_HOST'] . '/1209' . $filePath . $fileName;
}else{
die('上传失败');
}
}else{
die('非法操作');
}
//结束操作
exit;