Jfinal +百度WebUploader组件实现多图片上传实例

访客8年前 (2017-05-17)Jfinal4903


百度 Web Uploader文档的getting-started文档说明太简单,没有写全,在这里给大家补全(

$list会报没有定义,文档中确实没给定义



效果:

图片.png

有用部分

图片.png

外部jar包


jfinal-2.0-bin-with-src.jar(JFinal核心包)  
fastjson-1.2.7.jar(用于json数据的处理)  
cos-26Dec2008.jar(支持JFinal自带的上传功能)


1. 引入 css,js外部文件


<link id="bscss" href="${root}/bootstrap/css/bootstrap.css"
    rel="stylesheet">
<link rel="stylesheet" type="text/css"
    href="${root!}/webUploader/webuploader.css">
<link rel="stylesheet" type="text/css"
    href="${root!}/webUploader/style.css"><!--从官网下载的实例中有 -->
<script src="${root!}/resource/front/js/jquery-1.9.1.min.js"
    type="text/javascript"></script>
<script src="${root}/bootstrap/js/bootstrap.js" type="text/javascript"></script>
<script type="text/javascript">
    var BASE_URL = '${root!}/webUploader';
</script>
<script src="${root!}/webUploader/webuploader.js"></script>
2.页面部分,写容器dom

用来放置webuploader的dom

 <div id="uploader-demo">
    <!--用来存放item-->
    <div id="fileList" class="uploader-list"></div>
    <div id="filePicker">选择图片</div>
</div>
3.JS部分, 初始化webuploader组件,设置上传等事件监听。

<script type="text/javascript">
    $(function() {
        var $list = $("#fileList"); //这几个初始化全局的百度文档上没说明,气的肝疼。  
        //var $btn = $("#ctlBtn"); //开始上传  
        var thumbnailWidth = 100; //缩略图高度和宽度 (单位是像素),当宽高度是0~1的时候,是按照百分比计算,具体可以看api文档  
        var thumbnailHeight = 100;
        // 初始化Web Uploader
        var uploader = WebUploader.create({

            // 选完文件后,是否自动上传。
            auto : true,

            // swf文件路径
            swf : BASE_URL + '/Uploader.swf',

            // 文件接收服务端。
            server : '${root!}/check/uploads/111',

            // 选择文件的按钮。可选。
            // 内部根据当前运行是创建,可能是input元素,也可能是flash.
            pick : '#filePicker',

            // 只允许选择图片文件。
            accept : {
                title : 'Images',
                extensions : 'gif,jpg,jpeg,bmp,png',
                mimeTypes : 'image/*'
            }
            
        });

        // 当有文件添加进来的时候
        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) {
                                if (error) {
                                    $img.replaceWith('<span>不能预览</span>');
                                    return;
                                }

                                $img.attr('src', src);
                            }, thumbnailWidth, thumbnailHeight);
                        });
        // 文件上传过程中创建进度条实时显示。
        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) {
            $('#' + 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();
        });

    });
</script>

4. 后台部分,获取文件

public class CheckController extends Controller{   
    /**
     * 上传附件
     */ 
    public void uploads() {
        String uuid = getPara();
        // 上传代码
        UploadFile uf = getFile("file","check");//获得文件及设置其保存路径。file,默认的name;check,图片保存的路径
         String fileName=uf.getFileName();
        //获得到了端口
        String url ="/upload/check/"+uf.getFileName();
       
        SpotFile spotFile = new SpotFile();
        spotFile.setSpot_id(uuid);
        spotFile.setUrl(url);
        spotFile.setName(fileName);

         spotFile .save();
        
        setAttr("fileName",fileName);
        setAttr("uuid",uuid);
        renderJson();
    }
}


本文原创,转载必追究版权。

相关文章

多说评论框怎么用更好

 1.隐藏屏蔽掉多说评论框的版权链接代码?简单css实现:多说隐藏版权链接,在后台自定义css添加:#ds-thread #ds-reset .ds-powered-by { display...

base64加密java算法

base64加密java算法

 一、Base64算法概述Base64算法最早应用于解决电子邮件传输的问题。它是一种基于64个字符的编码算法,根据RFC 2045的定义:“Base64内容传输编码是一种以任意8位字节序列组...

使用Myeclipse 8.5开发基于JAX-WS的Web service实例

使用Myeclipse 8.5开发基于JAX-WS的Web service实例

 本文为Web service 开发入门篇,主要介绍在Myeclipse 8.5环境下开发Web service的服务程序和客户端程序的基本流程。 在Weblogic 11g...

get/post方式调用http接口

get/post方式调用http接口

 1. 项目环境如下:myeclipse8.5 、tomcat5.0/weblogic、xp、JDK:开发1.5,编译1.4为了方便,在原来的web项目UpDown中新建了一个httpcal...

get方式调用http接口   Header赋参数值

get方式调用http接口 Header赋参数值

   /**      195.     * 发送...

坑爹的ShowModalDialog 后台传值解决方案

 今天遇到需要ShowModalDialog打开页面,通过acceptanceIds 参数值后台过滤出相应结果前台  var url = "loadAccept...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。