上传文件任何地方都要用到,这篇文章介绍使用layui异步上传图片。
1.视图代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传插件</title>
<link href="/static/layui/css/layui.css" rel="stylesheet">
</head>
<body>
<div class="layui-upload">
<button type="button" class="layui-btn" id="cover">上传封面</button>
</div>
<div class="layui-input-inline">
<img id="preview" width="200px" height="200px">
</div>
<script src="/static/layui/layui.js"></script>
<script>
layui.use('upload', function() {
var upload = layui.upload;
var $ = layui.jquery;
var uploadInst = upload.render({
elem:'#cover'
,url:'doUpload'
,accept:'file' // 允许上传的文件类型
,auto:true // 自动上传
,before:function (obj) {
console.log(obj);
// 预览
obj.preview(function(index,file,result) {
// console.log(file.name); //图片名字
// console.log(file.type); //图片格式
// console.log(file.size); //图片大小
// console.log(result); //图片地址
$('#preview').attr('src',result); //图片链接 base64
});
// layer.load();
}
// 上传成功回调
,done:function(res) {
// console.log(upload);
// console.log(res);
if (res.code == 0) {
return layer.msg(res.msg);
}
return layer.msg(res.msg);
}
// 上传失败回调
,error:function(index,upload) {
return layer.msg(res.msg);
}
});
});
</script>
</body>
</html>
2.控制器代码
// 显示上传页面
public function upload()
{
return view();
}
//开始上传
public function doUpload()
{
$img = request()->file('file');
// 移动到框架应用根目录/public/uploads/ 目录下
$info = $img->move(ROOT_PATH . 'public' . DS . 'layer_uploads');
if($info){
// 成功上传后 获取上传信息
return json(['code' => 0, 'msg' => '上传成功!', 'url' => '/layer_uploads/' . $info->getSaveName()]);
}else{
// 上传失败获取错误信息
return json(['code' => 1, 'msg' => $img->getError(), 'url' => '']);
}
}
最好效果就是这样: