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)最开始的思路 一开始的想法是很简单的,找出每一行的高度,然后一行一行 ...
随机推荐
- CCNP路由实验之十五 NAT(网络地址转换)
CCNP路由实验之十五 NAT(网络地址转换) 众所周知,要让自己的电脑连上Internet,必须要到运营商(ISP)申请一个上网账号,依据此账号申请自己的宽频业务(拨号上网.商业固定IP等等) ...
- SSO 中间件 kisso
SSO 中间件 kisso kisso = cookie sso,基于 Cookie 的 SSO 中间件.kisso 不是一套完整的登录系统, 它的定位是一把高速开发 java Web 单点登录系 ...
- LeetCode 136 Single Number(仅仅出现一次的数字)
翻译 给定一个整型数组,除了某个元素外其余元素均出现两次. 找出这个仅仅出现一次的元素. 备注: 你的算法应该是一个线性时间复杂度. 你能够不用额外空间来实现它吗? 原文 Given an array ...
- 提高IIS的FTP安全性 管理员的九阴真经
提高IIS的FTP安全性 管理员的九阴真经 <九阴真经>是很多武林高手蒙昧以求的武林秘籍,在系统管理员这个武林中也有很多类似<九阴真经>一样的秘籍.在这里就向大家介绍一下有关提 ...
- [Vue + TS] Using Route events inside Vue
vue-router introduces new hooks into the component. In this lesson we’ll show you how to use these n ...
- thinkphp动态注册路由
thinkphp动态注册路由 一.总结 1.thinkphp使用路由步骤:a.config配置文件中开启路由 b.Route类的rule方法创建路由(在Routephp中)Route::rule(' ...
- HTML基础第三讲---字体
转自:https://i.cnblogs.com/posts?categoryid=1121494 同样我们在这里继续讲一下它的body,因为它能直观的让大家观察到你所学到的成果. 这一讲,我们来学习 ...
- HTML基础-第一讲
转自:https://blog.csdn.net/likaier/article/details/326639?utm_source=blogxgwz9 HTML是网页主要的组成部分,基本上一个网页都 ...
- ES5比较Jquery中的each与map 方法?
1.each es5: var arr = [1, 5, 7, 8, 9];var arr1 = []; arr.forEach(function (v, i) { arr1.push(v * 4) ...
- 给已有数据的oracle表建立外键关系
PS:这里是给自己做个备忘,下次遇到同类问题的时候,方便查找: 客户在有主外键关系的2张表进行页面删除时报错已有子记录,运维后台处理的时候应该找出相应的数据,先删除子记录,在删主表记录:但客户要的急, ...