SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片
 
在上一篇文章中,我们介绍了《 SpringMVC上传图片的常规上传方法 》。本文接着第一篇,将继续介绍SpringMVC的上传图片,其中在页面前端利用百度的开源组件WebUploader来进行上传图片,后台继续用SpringMVC来接收处理上传的图片。
百度开源WebUploader的相关资源:
官网地址:http://fex.baidu.com/webuploader/
快速入门文档:http://fex.baidu.com/webuploader/getting-started.html
详细API文档:http://fex.baidu.com/webuploader/doc/
 
百度上传组件初始化时,组件默认会生成一个隐藏的input标签,name属性值为“file”,且encType="multipart/form-data"。
后台接收处理图片的controller代码,按第一篇的《 SpringMVC上传图片常规上传方法》的springmvc处理方法接收文件即可。
/**
 
 * ======jsp中的代码部分=========
 
 */
 
<!-- webuploader.js -->
 
<script type="text/javascript" src="${basePath }/scripts/webuploader/webuploader.js"> </script>
 
<!-- webuploader.css -->
 
<link rel="stylesheet" type="text/css" href="${basePath }/scripts/webuploader/webuploader.css">
 
<script type="text/javascript" src="${basePath }/scripts/cms/mywebuploader.js"></script>
 
<!--dom结构部分-->
 
   <div id="uploader-demo" >
 
       <!--用来存放item,图片列表fileList-->
 
       <div id="fileList" class="uploader-list"></div>
 
       <div id="filePicker" >选择图片</div>
 
   </div>
 
 <!-- <input type="button" id="btn" value="开始上传"> -->
 
=========================js文件,mywebuploader.js=========================
$(function() {
 
    var $ = jQuery,
 
  // 展示图片列表的容器
 
    $list = $('#fileList'),
 
    // 优化retina, 在retina下这个值是2
 
    ratio = window.devicePixelRatio || 1,
 
    // 缩略图大小,像素*像素
 
    thumbnailWidth = 100 * ratio,
 
    thumbnailHeight = 100 * ratio,
 
    // Web Uploader实例
 
    uploader;
 
    
 
    // 初始化Web Uploader
 
    var uploader = WebUploader.create({
 
        // 选完文件后,是否自动上传。
 
        auto: true,
 
        // swf文件路径
 
        swf: basePath + '/scripts/webuploader/Uploader.swf',
 
        // 文件接收服务端。
 
        server: basePath + '/cms/notices/upload8.do',
 
//fileVal : "file", // 指定input标签name的属性值
 
        
 
        threads:'5',        //同时运行5个线程传输
 
        fileNumLimit:'10',  //文件总数量只能选择10个 
 
        // 选择文件的按钮。可选。
 
        // 内部根据当前运行是创建,可能是input元素,也可能是flash.
 
// pick: '#filePicker',
 
        
 
        pick: { id:'#filePicker',  //选择文件的按钮
 
                multiple:true }, 
 
        // 只允许选择图片文件。
 
        accept: {
 
            title: 'Images',
 
            extensions: 'gif,jpg,jpeg,bmp,png',
 
            mimeTypes: 'image/*'
 
        }
 
    });
 
    
 
    // 当有文件添加进来的时候,
 
//监听fileQueued事件,通过uploader.makeThumb来创建图片预览图。
 
//PS: 这里得到的是Data URL数据,IE6、IE7不支持直接预览。可以借助FLASH或者服务端来完成预览。
 
    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为容器jQuery实例 
 
         $list.append( $li );
 
 
 
        // 创建缩略图, thumbnailWidth x thumbnailHeight 为 100 x 100
 
        uploader.makeThumb( file, function( error, src ) { //webuploader方法 
 
            if ( error ) {
 
                $img.replaceWith('<span>不能预览</span>');
 
                return;
 
            }
 
             $img.attr( 'src', src );
 
        }, thumbnailWidth, thumbnailHeight );
 
    });
 
   // 然后剩下的就是上传状态提示了,当文件 上传过程中, 上传成功,上传失败,上传完成
 
// 都分别对应uploadProgress, uploadSuccess, uploadError, uploadComplete事件。
 
    // 文件上传过程中创建进度条实时显示。
 
    uploader.on( 'uploadProgress', function( file, percentage ) {
 
        var $li = $( '#'+file.id ),
 
            $percent = $li.find('.progress span');
 
 
 
        // 避免重复创建
 
        if ( !$percent.length ) {
 
            $percent = $('<p class="progress"><span></span></p>')
 
                    .appendTo( $li )
 
                    .find('span');
 
        }
 
 
 
        $percent.css( 'width', percentage * 100 + '%' );
 
    });
 
 
 
    // 文件上传成功,给item添加成功class, 用样式标记上传成功。
 
    uploader.on( 'uploadSuccess', function( file,response) {
 
        $( '#'+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();
 
    });
 
    //绑定提交事件
 
    $("#btn").click(function() {
 
        console.log("上传...");
 
        uploader.upload();   //执行手动提交
 
        console.log("上传成功");
 
      });
 
    
 
});
 
就这样搞定了,普通的前端上传功能就交给了WebUploader组件了,后端处理就交给SpringMVC了。这个开源上传组件的功能非常强大,可以进行分片上传、在线预览、大文件断点上传。
后面若有时间再一一介绍实现其他的强大功能~~~

SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片的更多相关文章

  1. 百度开源上传组件WebUploader的formData动态传值技巧

    基于Web页面的文件上传一直是互联网应用开发中避免不了的,从asp时代的AspUpload组件.到asp无组件上传,到.Net时代的FileUpload,再到HTML5时代的各种基于jQuery的上传 ...

  2. 百度webuploader 上传演示例子

    前端代码 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="baiduWebU ...

  3. 百度webuploader上传 1

    百度webupload网址:http://fex.baidu.com/webuploader/ 引入js和css <script src="../../Content/webuploa ...

  4. 分享百度文件上传组件webUploader的使用demo

    先创建DOM节点:<head ng-app="myApp"> <meta charset="UTF-8"> <title>& ...

  5. 百度开源上传组件webuploader 可上传多文件并带有进度条

    //上传多文件 function UploadMultiFile() { var uploader = WebUploader.create({ // 选完文件后,是否自动上传. auto: true ...

  6. webUploader上传组件 实际运用小结

    WebUploader组件实际介绍: 官网:http://fex.baidu.com/webuploader/doc/index.html 组件优势及优化总结:http://itindex.net/d ...

  7. webuploader 上传文件 生成链接下载文件

    最近 在asp.net MVC 项目 需要实现一个Excel和 图片上传功能.之前有使用过SWFUpload 做过上传图片功能,在本次实现过程中,有人推荐WebUploader 上传组件,因此采用we ...

  8. PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件

    PHP  多图上传,图片批量上传插件,webuploader.js,百度文件上传插件(案例教程) WebUploader作用:http://fex.baidu.com/webuploader/gett ...

  9. 百度上传组件 WebUploader

    WebUploader http://fex.baidu.com/webuploader/doc/index.html WebUploader API 文档详细解读 源码以及示例:https://gi ...

随机推荐

  1. rem 响应 js函数

    size();window.onresize = function(){ size();}function size(){ var htnl_o=document.getElementsByTagNa ...

  2. HIBERNATE知识复习记录3-关联关系

    先上一张图,关于几种关系映射: 抄一段解释: 基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型中有一个或多个引用.关联关系分为上述七 ...

  3. sysbench相关

    Sysbench工具是集系统测试和数据库测试一体的测试工具,但是传统的sysbench在数据库测试方面,没有遵循TPC-C测试模型,仅仅支持单个表的数据.而在实际的业务场景中,业务逻辑复杂的多.开源的 ...

  4. UGUI Auto Layout 自动布局

    Layout Element 首先分配 Minimum Size 如果还有足够空间,分配 Preferred Size 如果还有额外空间,分配 Flexible Size 比较特别的是 Flexibl ...

  5. Jena TDB Assembler

    TDB Assembler Assemblers (装配器) 是Jena中用于描述将要构建的对象(通常是模型和数据集 models & datasets)的一种通用机制.例如, Fuseki ...

  6. cocos2d-x 3.0 学习笔记: 一个可以拖拽的Label及schedule的应用

    #ifndef _DRAGLABEL_H_ #define _DRAGLABEL_H_ #include "cocos2d.h" USING_NS_CC; class DragLa ...

  7. JQUERY框架的优点与面试题

    1 你觉得 jquery 有哪些好处?jQuery 是轻量级的 javascript 框架强大的选择器出色的 DOM 操作的封装可靠的事件处理机制完善的 ajax 封装出色的浏览器的兼容性支持链式操作 ...

  8. 作业:WordCount--实现字符数,单词数,行数的统计

    1. Gitee 地址 https://gitee.com/fyxiaobai/wordcount 2. PSP表格 PSP2.1 PSP阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning ...

  9. 条件语句;for循环 嵌套复习

    //打印数字,0,1,8,10,12,每一个数单独占一行 //在全部数字打印完毕之后在打印数字的个数和所有数的和 int count = 0; int sum = 0; for (int i = 0; ...

  10. clipboard.js复制文字

    A-固定内容: <script type="text/javascript" src="script/clipboard.min.js"></ ...