页面写法
<!DOCTYPE html><html lang="en"><head> ???<meta charset="UTF-8"> ???<title>web uploader测试</title></head><body> ???<script src="https://cdn.bootcss.com/jquery/1.11.0-rc1/jquery.js"></script> ???<link rel="stylesheet" type="text/css" href="__PUBLIC__/webup/webuploader.css"> ???<script type="text/javascript" src="__PUBLIC__/webup/webuploader.js"></script> ???<div id="uploader-demo"> ???<!--用来存放item--> ???<div id="fileList" class="uploader-list"></div> ???<div id="filePicker">选择图片</div> ???<div id="upstart">开始上传</div> ???<!-- 下面是上传成功返回的图片路径,用户form提交用的 --> ???<form action="{:U(‘index/shangchuan_save‘)}" method="post"> ???<div id="upok_result"></div> ???<input type="submit" value="save" /> ???</form></div> ???<script> ???????var BASE_URL = "__PUBLIC__/webup"; ???????????var uploader = WebUploader.create({ ???????????// 选完文件后,是否自动上传。 ???????????auto: false, ???????????// swf文件路径 ???????????swf: BASE_URL + ‘/Uploader.swf‘, ???????????// 文件接收服务端。此为tp3框架的上传方法请求,根据需求和框架修改 ???????????server: ‘{:U("index/shangchuan_up")}‘, ???????????// 选择文件的按钮。可选。 ???????????// 内部根据当前运行是创建,可能是input元素,也可能是flash. ???????????pick: ‘#filePicker‘, ???????????// 只允许选择图片文件。 ???????????accept: { ???????????????title: ‘Images‘, ???????????????extensions: ‘gif,jpg,jpeg,bmp,png‘, ???????????????mimeTypes: ‘image/jpg,image/jpeg,image/png‘ ???????????} ???????}); ???????// 当有文件添加进来的时候 ???????uploader.on( ‘fileQueued‘, function( file ) { ???????????var $li = $( ???????????????????‘<div id="‘ + file.id + ‘" class="file-item thumbnail">‘ + ???????????????????????‘<span class="jieguo success">ok</span>‘+ ???????????????????????‘<img class="web_up_img">‘ + ???????????????????????‘<div class="info">‘ + file.name + ‘</div>‘ + ???????????????????‘</div>‘ ???????????????????), ???????????????$img = $li.find(‘img‘); ???????????// $list为容器jQuery实例 ???????????$(‘#fileList‘).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 ); ???????????}, 100, 100 ); ???????}); ???????// 文件上传过程中创建进度条实时显示。 ???????uploader.on( ‘uploadProgress‘, function( file, percentage ) { ???????????var $li = $( ‘#‘+file.id ), ???????????????$percent = $li.find(‘.progress span‘); ???????????// 避免重复创建 ???????????if ( !$percent.length ) { ???????????????$percent = $(‘<p class="progress" style="background-color:red;"><span></span></p>‘) ???????????????????????.appendTo( $li ) ???????????????????????.find(‘span‘); ???????????} ???????????$percent.css( ‘width‘, percentage * 100 + ‘%‘ ); ???????}); ???????// 文件上传成功,给item添加成功class, 用样式标记上传成功。 ???????uploader.on( ‘uploadSuccess‘, function( file,response ) { ???????????if(response.status==1){ ???????????????//增加这个样式,上传成功的提示就显示出来了 ???????????????$( ‘#‘+file.id ).addClass(‘upload-state-done‘); ???????????????//上传成功存到隐藏的div里面用于form提交 ???????????????var str = "<input type=‘text‘ name=‘photos[]‘ value=‘" ???????????????+response.msg.file.savepath ???????????????+response.msg.file.savename ???????????????+"‘ id=‘res_" ???????????????+file.id ???????????????+"‘ />"; ???????????????// console.log(str); ???????????????$(‘#upok_result‘).append(str); ???????????}else{ ???????????????//上传失败显示提示 ???????????????$( ‘#‘+file.id ).addClass(‘upload-state-done-error‘); ???????????????var $li = $( ‘#‘+file.id ); ???????????????$(‘<span class="jieguo error">上传失败</span>‘).prependTo( $li ); ???????????} ???????????????????}); ???????// 文件上传失败,显示上传出错。 ???????uploader.on( ‘uploadError‘, function( file ) { ???????????//上传失败显示提示 ???????????$( ‘#‘+file.id ).addClass(‘upload-state-done-error‘); ???????????var $li = $( ‘#‘+file.id ), ???????????????$error = $li.find(‘span.error‘); ???????????// 避免重复创建 ???????????if ( !$error.length ) { ???????????????$error = $(‘<span class="jieguo error">上传失败</span>‘).appendTo( $li ); ???????????} ???????}); ???????// 完成上传完了,成功或者失败,先删除进度条。 ???????uploader.on( ‘uploadComplete‘, function( file ) { ???????????//删除进度条 ???????????$( ‘#‘+file.id ).find(‘.progress‘).remove(); ???????????//增加删除按钮 ???????????$( ‘#‘+file.id ).append(‘<span class="jieguo success" style="cursor:pointer;" onclick=\‘delimg("‘+file.id+‘")\‘>删除</span>‘); ???????}); ???????$("#upstart").click(function(){ ???????????uploader.upload(); ???????}); ???????//zll 删除图片 ???????function delimg(fileid){ ???????????$("#"+fileid).remove(); ???????????$("#res_"+fileid).remove(); ???????} ???</script></body></html>
webuploader.css 我也做了一点点修改
.webuploader-container { ???position: relative; ???float: left;}.webuploader-element-invisible { ???position: absolute !important; ???clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ ???clip: rect(1px,1px,1px,1px);}.webuploader-pick { ???position: relative; ???display: inline-block; ???cursor: pointer; ???background: #00b7ee; ???padding: 10px 15px; ???color: #fff; ???text-align: center; ???border-radius: 3px; ???overflow: hidden;}.webuploader-pick-hover { ???background: #00a2d4;}.webuploader-pick-disable { ???opacity: 0.6; ???pointer-events:none;}.uploader-list{ ???display: flex; ???flex-wrap: wrap; ???flex-direction: row; ???width: 300px;}.file-item{ ???/*height: 150px;*/ ???width: 100px; ???box-sizing: border-box; ???margin:5px; ???border: 1px solid gray; ???padding: 5px; ???box-shadow: 0 0 2px 1px grey;}.info{ ???color: white; ???background-color: rgba(0,0,0,0.5); ???line-height: 20px; ???font-size: 12px; ???text-align: center; ???margin-top: -24px; ???position: relative; ???height: 20px;}.web_up_img{ ???width: 100%;}#upstart{ ???background-color: #669584; ???color: white; ???width: 94px; ???height: 41px; ???line-height: 41px; ???text-align: center; ???border-radius: 3px; ???float: left; ???margin-left: 10px;}.jieguo{ ???display: none; ???color: white; ???text-align: center; ???font-size: 12px; ???height: 14px; ???line-height: 14px;}.success{ ???background-color: green;}.error{ ???background-color: red;}.upload-state-done .success{ ???display: block;}.upload-state-done-error .error{ ???display: block; ???}
tp3框架的上传方法
public function shangchuan_up(){ ???????$upload = new \Think\Upload();// 实例化上传类 ???????$upload->maxSize ??= ????3145728 ;// 设置附件上传大小 ???????$upload->exts ?????= ????array(‘jpg‘, ‘gif‘, ‘png‘, ‘jpeg‘);// 设置附件上传类型 ???????$upload->rootPath ?= ????‘./Uploads/‘; // 设置附件上传根目录 ???????$upload->savePath ?= ????‘‘; // 设置附件上传(子)目录 ???????// 上传文件 ????????$info ??= ??$upload->upload(); ???????if(!$info) {// 上传错误提示错误信息 ???????????// $this->error($upload->getError()); ???????????$this->ajaxReturn(array(‘status‘=>0,‘msg‘=>$upload->getError())); ???????}else{// 上传成功 ???????????$this->ajaxReturn(array(‘status‘=>1,‘msg‘=>$info)); ???????} ???}
webuploader ??小demo
原文地址:https://www.cnblogs.com/zonglonglong/p/8311691.html