上传模块自 layui 2.0 的版本开始,进行了全面重写,这使得它不再那么单一,它所包含的不仅是更为强劲的功能,还有灵活的UI。任何元素都可以作为上传组件来调用,譬如按钮、图片、普通的DIV等等,而不再是一个单调的
上传模块自 layui 2.0 的版本开始,进行了全面重写,这使得它不再那么单一,它所包含的不仅是更为强劲的功能,还有灵活的UI。任何元素都可以作为上传组件来调用,譬如按钮、图片、普通的DIV等等,而不再是一个单调的file文件域。
前端html代码:前端采用隐藏域保存上传图片文件名
<input type="hidden" name="vod_img" id="vod_img111">
<form class="layui-form">
<div class="layui-form-item">
<label for="vod_name" class="layui-form-label">
<span class="x-red">*</span>名称
</label>
<div class="layui-input-inline">
<input type="text" id="vod_name" name="vod_name" required="" lay-verify="required"
autocomplete="off" class="layui-input" placeholder="视频名称">
</div>
</div>
<style>.layui-upload-img{ width: 92px; height:92px}</style>
<div class="layui-form-item">
<label class="layui-form-label"><span class="x-red">*</span>演员图片</label>
<div class="layui-input-block">
<div class="layui-upload">
<button type="button" class="layui-btn" id="test1">上传图片</button>
<div class="layui-upload-list">
<img class="layui-upload-img" id="demo1" >
<p id="demoText"></p>
</div>
</div>
</div>
<input type="hidden" name="vod_img" id="vod_img111">
</div>
<div class="layui-form-item">
<label for="L_repass" class="layui-form-label">
</label>
<button class="layui-btn" lay-filter="add" lay-submit="">
增加
</button>
</div>
</form>
前端js代码:图片上传成功后赋值给隐藏域
$('#vod_img111').val(res.vod_img)
<script>
layui.use(['upload',','form', 'layer'],function() {
var laydate = layui.laydate;
$ = layui.jquery
,upload = layui.upload;
var form = layui.form,
layer = layui.layer;
//监听提交
form.on('submit(add)',
function(data) {
console.log(data);
//发异步,把数据提交给php
$.ajax({
type:'post',
dataType:'json',
data:data.field,
url:'{:url("admin/Vod/vod_add")}',
success:function(msg){
if(msg.code==200){
layer.alert(msg.msg, {
icon: 6
},
function() {
//关闭当前frame
xadmin.close();
// 可以对父窗口进行刷新
xadmin.father_reload();
});
}else{
layer.msg(msg.msg, {icon: 5})
}
},
error:function(msg){
layer.msg('网络错误', { icon:5});
}
})
return false;
});
//普通图片上传
var uploadInst = upload.render({
elem: '#test1',
url: '{:url("admin/Vod/vod_upload")}',
multiple: false, //开启多图上传这个是重点
accept: 'images', // 允许上传的文件类型
size: 2048, //允许大小,最大2M
field:'vod_img',
before: function(obj){
//预读本地文件示例,不支持ie8
obj.preview(function(index, per_img, result){
$('#demo1').attr('src', result); //图片链接(base64)
});
}
,done: function(res){
console.log(res.vod_img)
//如果上传失败
$('#vod_img111').val(res.vod_img)
if(res.code == 1){
return layer.msg('上传成功');
}
//上传成功
}
,error: function(){
//演示失败状态,并实现重传
var demoText = $('#demoText');
demoText.html('<span style="color: #FF5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
demoText.find('.demo-reload').on('click', function(){
uploadInst.upload();
});
}
});
});
</script>
后端PHP代码:上传操作和添加操作
<?php
// 上传图片操作
public function vod_upload(){
// 获取表单上传文件 例如上传了001.jpg
$file = request()->file('vod_img');
$info = $file->move(ROOT_PATH . 'public' . DS . 'static/uploads/vod');
$reubfo = array(); //定义一个返回的数组
if($info){
$reubfo['code']= 1;
$reubfo['vod_img'] = '/static/uploads/vod/'.date('Ymd').'/'.$info->getFilename();
}else{
// 上传失败获取错误信息
$reubfo['code']= 0;
$reubfo['err'] = $file->getError();
}
return $reubfo;
}
// 添加
public function vod_add(){
if(request()->isPost()){
$data=input('post.');
$res=db('vod')->insert($data);
if($res){
return json(['code'=>200,'msg'=>'添加成功']);
}else{
return json(['code'=>500,'msg'=>'添加失败']);
}
}
return view();
}
?>
沃梦达教程
本文标题为:thinkphp5结合Layui实现上传图片预览
猜你喜欢
- Laravel balde模板文件中判断数据为空方法 2023-08-30
- PHP简单实现二维数组的矩阵转置操作示例 2022-10-02
- 用nohup命令实现PHP的多进程 2023-09-02
- php微信公众号开发之秒杀 2022-11-23
- PHP中PDO事务处理操作示例 2022-10-15
- laravel实现按月或天或小时统计mysql数据的方法 2023-02-22
- PHP实现微信支付(jsapi支付)流程步骤详解 2022-10-09
- laravel通用化的CURD的实现 2023-03-17
- windows下9款一键快速搭建PHP本地运行环境的好工具(含php7.0环境) 2023-09-02
- PHP仿tp实现mvc框架基本设计思路与实现方法分析 2022-10-18