引入需要的插件:
webuploader.css
webuploader.min.js
前端布局:
<!--自定义图片--> <div id="uploader-demo"> <div id="fileList" class="uploader-list"> <input type="hidden" id="banner-img" name="img"> </div> <div id="filePicker">选择图片</div> <p class="text-danger">必填,请上传1920*680图片</p> </div> <!--自定义图片-->
前端ajax获取数据:
$(".btn-submit").click(function(){
var name = $("input[name='name']").val();
var img = $("input[name='img']").val();
if(!name){
layer.alert('轮播图名称不能为空!',{icon:2,time:3000});
return false;
}
if(!img){
layer.msg('请上传一张缩略图!',{icon:2});
return false;
}
// 获取数据
var formdata = new FormData(document.getElementById('form'));
$.ajax({
type:'post',
dataType:"json",
url:"{:url('banner/doAdd')}",
data:formdata,
processData:false,
contentType:false,
success:function (data) {
if(data.status){
layer.alert(data.message,{icon:1,time:2000});
// setTimeout(function(){
// window.location.href = data.url;
// },2000);
}else{
layer.alert(data.message,{icon:2});
}
}, error:function(XMLHttpRequest, textStatus, errorThrown){
console.log(XMLHttpRequest.status);
console.log(XMLHttpRequest.readyState);
console.log(textStatus);
}
});
return false;
});注意:表单形式
<form method="post" id="form" class="form-horizontal" action="" enctype="multipart/form-data">
引入webuploader 上传图片的js验证:
//上传图片
var $list=$("#fileList"); //这几个初始化全局的百度文档上没说明,好蛋疼
var thumbnailWidth = 100; //缩略图高度和宽度 (单位是像素),当宽高度是0~1的时候,是按照百分比计算,具体可以看api文档
var thumbnailHeight = 100;
// 初始化Web Uploader
var uploader = WebUploader.create({
// 选完文件后,是否自动上传。
auto: true,
// 不压缩
compress:false,
// swf文件路径
swf: '__STATIC__/plugins/webuploader-0.1.5/Uploader.swf',
// 文件接收服务端。
server: '{:url("banner/uploadpic")}',
// 选择文件的按钮。可选。
// 内部根据当前运行是创建,可能是input元素,也可能是flash.
pick: '#filePicker',
//限制只能上传一个文件
fileNumLimit: 1,
// 只允许选择图片文件。
accept: {
title: 'Images',
extensions: 'gif,jpg,jpeg,bmp,png',
mimeTypes: 'image/*'
}
});
//上传完成事件监听
uploader.on( 'fileQueued', function(file) {
var $li = $(
'<div id="' + file.id + '" class="file-item">' +
'<img>' +
'<div class="info">' + file.name + '</div>' +
'</div>'
),
btns = $('<div class="file-panel">' +
'<span class="cancel">删除</span>').appendTo( $li ),
$img = $li.find('img');
// $list为容器jQuery实例
$list.append( $li );
// 创建缩略图
// 如果为非图片文件,可以不用调用此方法。
// thumbnailWidth x thumbnailHeight 为 100 x 100
uploader.makeThumb( file, function( error, src ) {
if ( error ) {
$img.replaceWith('<span>不能预览</span>');
return;
}
$img.attr( 'src', src );
}, thumbnailWidth, thumbnailHeight );
$li.on( 'mouseenter', function() {
btns.stop().animate({height: 30});
});
$li.on( 'mouseleave', function() {
btns.stop().animate({height: 0});
});
});
//上传成功返回文件名
uploader.on('uploadSuccess', function(file,response){
if(response.status == 1){
//在当前图片LI里添加图片地址
$('#'+file.id).attr('banner_img',response.msg);
$("#banner-img").val(response.msg);
}else{
layer.msg(response.msg,{icon:2});
}
});
$list.on('click','.cancel',function(){
var ID = $(this).parent().parent().attr('id');
var img = $(this).parent().parent().attr('banner_img');
var quID=uploader.getFile(ID)
uploader.removeFile(quID)
$(this).parent().parent().remove();
$("#banner-img").val('');
$.ajax({
url:"{:url('banner/delImg')}",
type:'delete',
data:{img},
success:function(res){
if(res.status==0){
layer.msg(res.msg);
}
}
});
return false;
})后端图片上传控制代码:
// banner图片上传
public function uploadpic()
{
// $getImg = $_FILES['file']['tmp_name'];
// list($width,$height) = getimagesize($getImg);
// if($width != 1920 && $height != 680){
// return json(['status'=>0,'msg'=>'图片尺寸不对!']);
// }
$file = request()->file('file');
$info = $file->validate(['size'=>1024*1024,'ext'=>'jpeg,jpg,png,gif'])->move( '../public/uploads/banner');
if($info){
$savename = str_replace("\\","/",$info->getSaveName());
return json(['status'=>1,'msg'=>$savename]);
}else{
return json(['status'=>0,'msg'=>$file->getError()]);
}
}此时,可以上传图片,在浏览器中打印图片数据

上传数据代码:
public function doAdd()
{
if(Request::isPost()){
$data = Request::param();
halt($data);
// $data['img']= request()->file('img');
try {
BannerModel::create($data);
} catch (Exception $e) {
return resMsg(0, '轮播图添加失败' . '<br>' . $e->getMessage(), url("lst"));
}
return resMsg(1, '轮播图添加成功',url("lst"));
}
}完毕。