webuploader 小demo
页面写法
<!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的更多相关文章
- 新手 gulp+ seajs 小demo
首先,不说废话,它的介绍和作者就不在多说了,网上一百度一大堆: 我在这里只是来写写我这2天抽空对seajs的了解并爬过的坑,和实现的一个小demo(纯属为了实现,高手请绕道); 一.环境工具及安装 1 ...
- Nancy之基于Nancy.Hosting.Self的小Demo
继昨天的Nancy之基于Nancy.Hosting.Aspnet的小Demo后, 今天来做个基于Nancy.Hosting.Self的小Demo. 关于Self Hosting Nancy,官方文档的 ...
- Nancy之基于Nancy.Owin的小Demo
前面做了基于Nancy.Hosting.Aspnet和Nancy.Hosting.Self的小Demo 今天我们来做个基于Nancy.Owin的小Demo 开始之前我们来说说什么是Owin和Katan ...
- Nancy之基于Self Hosting的补充小Demo
前面把Hosting Nancy with ASP.NET.Self Hosting Nancy和Hosting Nancy with OWIN 以demo的形式简单描述了一下. 这篇是为Self H ...
- [Unity3D]做个小Demo学习Input.touches
[Unity3D]做个小Demo学习Input.touches 学不如做,下面用一个简单的Demo展示的Input.touches各项字段,有图有真相. 本项目已发布到Github,地址在(https ...
- Android -- 自定义View小Demo,动态画圆(一)
1,转载:(http://blog.csdn.NET/lmj623565791/article/details/24500107),现在如下图的效果: 由上面的效果图可以看到其实是一个在一个圆上换不同 ...
- Win10 FaceAPI小demo开发问题汇总
Win10 FaceAPI小demo开发问题汇总 最近使用微软牛津计划做一个小demo,使用FaceAPI做一个小应用,实现刷脸的功能.开发的过程中用到几个问题,具体如下: Stream 与IRand ...
- 模仿京东顶部搜索条效果制作的一个小demo
最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 #define kScreenWidth [UIScreen mainScreen].bounds.s ...
- Android学习小Demo一个显示行线的自定义EditText
今天在处理一个EditText的时候,想着把EditText做成像一本作业本上的纸一样,每一行都可以由线条隔开,具体效果如下: 1)最开始的思路 一开始的想法是很简单的,找出每一行的高度,然后一行一行 ...
随机推荐
- 小的时候.by小雷
小的时候,总是有很多想法. 想去做,却做不成. 因为,自己小,被父母约束着,被学校圈着,被老师教育着. 想买个小霸王游戏机,没钱.在父辈的眼中,"游戏" ,游戏室,电脑游戏 ...
- Java&Xml教程(九)Java中通过XSD校验XML合法性
Java XML校验API可以通过XSD(XML Schema Definition)校验XML文件内容的合法性. 在以下的案例中使用javax.xml.validation.Validator 类通 ...
- [Python] String Formatting
One particularly useful string method is format. The format method is used to construct strings by i ...
- javascript 获取HTML DOM父,子,临近节点
在Web应用程序特别是Web2.0程序开发中.常常要获取页面中某个元素,然后更新该元素的样式.内容等.怎样获取要更新的元素,是首先要解决的问题.令人欣慰的是,使用JavaScript获取节点的方法有非 ...
- Day3下午解题报告
预计分数:20+40+30=90 实际分数:40+90+60=190 再次人品爆发&&手感爆发&&智商爆发 谁能告诉我为什么T1数据这么水.. 谁能告诉我为什么T2数据 ...
- windows 静态和动态库
c++中共有两种库:1.动态链接库LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library.(这 ...
- Node.js安装+环境配置【Windows版】
Node.js安装及环境配置之Windows篇 一.安装环境 1.本机系统:Windows 10 Pro(64位)2.Node.js:v6.9.2LTS(64位) 二.安装Node.js步骤 1.下 ...
- Node里面的对象创建问题
1.利用new Object()创建时 var a =new Object() a.b = 1 console.log(a) // 打印出来是[object Object] console.log(J ...
- 解读OpenRTB(实时竞价)生态系统
最近3年,广告实时竞价(RealTimeBidding)模式逐渐流行起来. 2012年大致了解过,最近一段时间,重新温习下. 半壁江山 生态系统总的来说分为2个部分,卖方和买方. 卖方:媒体,即拥有广 ...
- input输入框获得、失去焦点添加事件
onBlur:当输入框失去焦点后 onFocus:当输入框获得焦点后 这两个JavaScript事件是写在html标签中的例如: <input type="text" onB ...