webuploader实现单图片上传入七牛云存储且预览
webuploader实现单图片上传到七牛云存储且预览
使用百度的webuploader上传图片且预览的效果图:

一、index.html
二、webuploader/getting-started-qiniu.js
三、webuploader/webuploader.css
四、百度webuploader比较灵活,通过html5实现文件的ajax上传,不支持html5的浏览器使用flash支持图片上传,而且一个页面可以同时支持单图片上传和视频上传实例,也就是说一个页面可以支持多个实例,具体使用参考api:http://fex.baidu.com/webuploader/doc/index.html
使用百度的webuploader上传图片且预览的效果图:
一、index.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>百度图片上传</title> <!--引入CSS--> <link rel="stylesheet" type="text/css" href="webuploader/webuploader.css"> <!--引入JS--> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="js/jquery-json-2.4.js"></script> <script type="text/javascript" src="webuploader/webuploader.js"></script> <script type="text/javascript" src="webuploader/getting-started-qiniu.js"></script> </head> <body> <!--dom结构部分--> <div id="uploader-demo"> <!--用来存放item--> <div id="fileList" class="uploader-list"></div> <div id="filePicker">选择图片</div> </div> </body> </html>
二、webuploader/getting-started-qiniu.js
// 单图片上传demo jQuery(function() { var $ = jQuery, $list = $('#fileList'), // 优化retina, 在retina下这个值是2 ratio = window.devicePixelRatio || 1, // 缩略图大小 thumbnailWidth = 100 * ratio, thumbnailHeight = 100 * ratio, // Web Uploader实例 uploader; // 初始化Web Uploader uploader = WebUploader.create({ // 自动上传。 auto : true, // swf文件路径 swf : 'webuploader/Uploader.swf', // 文件接收服务端。 server : 'http://up.qiniu.com/', // 选择文件的按钮。可选。 // 内部根据当前运行是创建,可能是input元素,也可能是flash. pick : '#filePicker', // 只允许选择文件,可选。 accept : { title : 'Images', extensions : 'gif,jpg,jpeg,bmp,png', mimeTypes : 'image/*' }, // 上传文件个数 fileNumLimit : 1, // 全局设置, 文件上传请求的参数表,每次发送都会发送此对象中的参数。 formData: { token : 'zi1OZ8VhS6nZ0YRAc6NcCCjKR8m2OaTWxKWPl7Hy:ObKB-V4Y2lK6Mbt1bTigBACRGEI=:eyJzY29wZSI6ImRqc3BhY2UiLCJkZWFkbGluZSI6MTQzOTU2OTg1MX0=' } }); // 当有文件添加进来的时候 uploader.on('fileQueued', function(file) { var $li = $('<div id="' + file.id + '" class="file-item thumbnail">' + '<img>' + '<div class="info">' + file.name + '</div>' + '</div>'), $img = $li.find('img'); $list.html($li); // 创建缩略图 uploader.makeThumb(file, function(error, src) { if (error) { $img.replaceWith('<span>不能预览</span>'); return; } $img.attr('src', src); }, thumbnailWidth, thumbnailHeight); }); //局部设置,给每个独立的文件上传请求参数设置,每次发送都会发送此对象中的参数。。参考:https://github.com/fex-team/webuploader/issues/145 uploader.on('uploadBeforeSend', function( block, data, headers) { data.key = new Date().toLocaleTimeString(); }); // 文件上传过程中创建进度条实时显示。 uploader.on('uploadProgress', function(file, percentage) { var $li = $('#' + file.id), $percent = $li.find('.progress span'); // 避免重复创建 if (!$percent.length) { $percent = $('').appendTo($li) .find('span'); } $percent.css('width', percentage * 100 + '%'); }); // 文件上传成功,给item添加成功class, 用样式标记上传成功。 uploader.on('uploadSuccess', function(file) { $('#' + file.id).addClass('upload-state-done'); }); // 文件上传失败,现实上传出错。 uploader.on('uploadError', function(file) { var $li = $('#' + file.id), $error = $li.find('div.error'); // 避免重复创建 if (!$error.length) { $error = $('<div class="error"></div>').appendTo($li); } $error.text('上传失败'); }); // 完成上传完了,成功或者失败,先删除进度条。 uploader.on('uploadComplete', function(file) { $('#' + file.id).find('.progress').remove(); }); uploader.on('uploadAccept', function(file, response) { console.log($('#' + file.id).html()); console.log($.toJSON(response)); if (response.code == 1) { // 通过return false来告诉组件,此文件上传有错。 return false; } }); // 先从文件队列中移除之前上传的图片,第一次上传则跳过 $("#filePicker").on('click', function () { if (!WebUploader.Uploader.support()) { var error = "上传控件不支持您的浏览器!请尝试升级flash版本或者使用Chrome引擎的浏览器。<a target='_blank' href='http://se.360.cn'>下载页面</a>"; console.log(error); return; } var id = $list.find("div").attr("id"); if (undefined != id) { uploader.removeFile(uploader.getFile(id)); } }); });
三、webuploader/webuploader.css
.webuploader-container { position: relative; } .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; }
四、百度webuploader比较灵活,通过html5实现文件的ajax上传,不支持html5的浏览器使用flash支持图片上传,而且一个页面可以同时支持单图片上传和视频上传实例,也就是说一个页面可以支持多个实例,具体使用参考api:http://fex.baidu.com/webuploader/doc/index.html