plupload+artdialog实现多平台文件上传

背景:本来项目中使用的前端文件上传控件是uploadify,一切相安无事了一段时间后。现场传来”喜讯“,客户要用ipad使用系统,还想上传图片。客户老爷一拍脑门,研发就要加班加点。大家知道uploadify是依赖flash的,所以在ios,mac系统上都不行。于是,经过一番google,找到了plupload。上手比较简单。

页面html代码:

head标签中包含必要的js文件

<script type="text/javascript" src="js/jquery-1.9.1.min.js" ></script>
<!-- art dialog -->
<script type="text/javascript" src="artdialog/artDialog.source.js?skin=blue"></script>
<!-- plupload -->
<script type="text/javascript" src="plupload/plupload.full.js"></script>

body标签中的页面元素

<!-- 触发弹出框 -->
<a id="uploadBtn" class="optionbtn inline" href="#">文件上传</a>
<div id="uploadContent"  class="" style="display:none;height:300px;overflow-x:hidden;overflow-y:auto;">
    <div id="choosefile">
        <span>单个文件支持小于100M</span><br/>
        <a id="uploadify" href="javascript:void(0);">选择文件</a>
    </div>
    <div id="uploadfileQueue" style="border: 1px solid #a7c5e2;height: 228px;width: 350px;">

    </div>
</div>
<pre id="console"></pre>
 

script标签中的代码

var globalUploader;
function _plupload(){
      var uploader = new plupload.Uploader({
      runtimes : ‘html5,flash,silverlight,html4‘,
      browse_button: ‘uploadify‘, //页面上浏览文件的DOM对象的id属性
       container: ‘uploadContent‘,//包含browse_button的div
      url: ‘/uploadAction!localUpload.action‘,//接收文件上传的action
      flash_swf_url : ‘/folder/js/plupload/Moxie.swf‘,
      silverlight_xap_url : ‘/folder/js/plupload/Moxie.xap‘,
      filters : {??
            max_file_size : ‘100mb‘,//限制上传文件大小
            mime_types: [//限制上传文件类型
                     {title : "Image files", extensions : "jpg,gif,png"}
                 ]
      },
      init: {
            PostInit: function() {
                $(‘#uploadfileQueue‘).html(‘‘);
            },
            UploadFile : function(up,file){//BeforeUpload后触发

            },
            BeforeUpload : function(up,file){//点击按钮后上传前触发,此处可以做查询同名文件,检查剩余空间等操作
                //检查是否有重名文件,有则直接在文件名末尾加个括号和数字以示区分
                      $.ajax({
                    url:"/folder/personal/personalAction!getNewFileName.action",
                    type:"POST",
                    async:false,
                    data:{‘upFileName‘ : file.name, ‘globalPid‘ : globalPid},
                    dataType:"json",
                    success:function(data){
                        //上传前设置参数
                          up.setOption(‘multipart_params‘, {
                          upFileName : data.newFileName,
                          upFileType : file.name.split(".")[file.name.split(".").length - 1],//后缀
                             upFileSize : file.size,
                          parentId : globalPid
                        });
                    },
                    error:function(XMLHttpRequest, textStatus, errorThrown){
                        messageAlert("对不起,文件["+file.name+"]上传准备失败",‘‘);
//                        $(‘#uploadify‘).uploadify(‘cancel‘,file.id);//按id取消某个上传任务
                    }
                });

            },
            ????????????????????????FileFiltered: function(up, file){
                //选择文件后触发
            },
            FilesAdded: function(up, files) {//文件添加到队列中
                var i = 0;//记录文件列表编号,删除用
                plupload.each(files, function(file) {
                    $(‘#uploadfileQueue‘).html($(‘#uploadfileQueue‘).html() +
                            ‘<div id="‘ + file.id + ‘" class="uploadify-queue-item"><div class="cancel"><a href="javascript:_plupload_removeFile(‘+i+‘,‘+file.id+‘)"></a></div><span class="fileName">‘ + file.name +
                            ‘ (‘ + plupload.formatSize(file.size) + ‘)</span><b></b><div class="uploadify-progress"><div class="uploadify-progress-bar"></div></div></div>‘);
                    i ++;
                });
            },
            UploadProgress: function(up, file) {//点击开始上传后触发,此处可以添加进度条,利用file.percent
                document.getElementById(file.id).getElementsByTagName(‘b‘)[0].innerHTML = ‘<span>-‘ + file.percent + "%</span>";//百分比
                $(‘#‘ + file.id).find(‘.uploadify-progress-bar‘).css(‘width‘, file.percent + ‘%‘);//进度条
            },

            Error: function(up, err) {//出错触发
                document.getElementById(‘console‘).innerHTML += "\n错误 #" + err.code + ": " + err.message;
            },
            FileUploaded: function(up, file, info) {//一个文件上传完触发
                            // Fires when a file is successfully uploaded.
                data = eval( "(" + info.response + ")" );//服务器返回的数据,此处可以修改页面上的文件列表等

                        },
            UploadComplete: function(up, files){//所有文件上传完触发
                //Fires when all files in a queue are uploaded.

            }
        }
    });
    uploader.init();
    globalUploader = uploader;
}
function popUpDialog(){
    artDialog({
        id: ‘file-upload‘,
        title: ‘文件上传‘,
        fixed: true,
        lock: true,
        content: $("#uploadContent")[0],
        button:[{
            name: ‘开始上传‘,
            focus:true,
            callback: function(){
                globalUploader.start();
                return false;
            }
        },{
            name: ‘关闭‘,
            callback: function(){
                $(‘#uploadfileQueue‘).html(‘‘);//删掉上传队列的内容
                globalUploader.files.splice(0,globalUploader.files.length);//清除上传队列中的内容
                return true;
            }
        }],
        close: function(){
            $(‘#uploadfileQueue‘).html(‘‘);//删掉上传队列的内容
            globalUploader.files.splice(0,globalUploader.files.length);//清除上传队列中的内容
        }
    });
}
$(function(){
    $(‘#uploadBtn‘).click(function(){
        popUpDialog();
    });
    _plupload();
});

后台代码就不写了,我用的struts2后台action中使用private File file接收的文件,改其他名字就是null,目前还不知道怎么设置控件中的这个值

然后效果就是这个样子

想要进度条需要加上这些css样式,就是已有控制

<style type="text/css">
    #uploadfileQueue {
        position: relative;
        left: 0;
        top: 0;
        border: 1px solid #a7c5e2;
        margin-bottom: 5px;
        height: 228px;
        width: 350px;
        overflow-x: hidden;
        overflow-y: auto;
    }
    .uploadify-queue-item {
    /* background-color: #F5F5F5; */
        background-color: #FFF;
        -webkit-border-radius: 3px;
        -moz-border-radius: 3px;
        border-radius: 3px;
        font: 11px Verdana, Geneva, sans-serif;
        /* margin-top: 5px; */
        margin: 5px 5px 5px 5px;
        max-width: 350px;
        padding: 10px;
    }
    .uploadify-progress {
        background-color: #E5E5E5;
        margin-top: 10px;
        width: 100%;
    }
    .uploadify-progress-bar {
        background-color: #0099FF;
        height: 3px;
        width: 1px;
    }
</style>

最后的效果。什么,还想要uploadify的删除队列里文件的叉叉,好吧

在style里再加上这段

.uploadify-queue-item .cancel a {
    background: url(‘js/uploadify-cancel.png‘) 0 0 no-repeat;
    float: right;
    height: 16px;
    text-indent: -9999px;
    width: 16px;
}

当然还得加上删除的js代码。这里官方api里面有removeFile(file)但是,用再这里不太好使。于是使用了另一个方法splice(num,length),num是从第几个开始删,length是删除的个数。

function _plupload_removeFile(removeNum,fileId){
    globalUploader.files.splice(removeNum,1);//删除部分文件
    $(fileId).fadeOut();
}

最终效果。

plupload+artdialog实现多平台文件上传

时间: 2024-07-31 20:10:07

plupload+artdialog实现多平台文件上传的相关文章

plupload文件上传插件

一 资源文档 二 基本使用 三 可能遇到的问题 一 资源文档 Git仓库地址:https://github.com/moxiecode/plupload 一个中文速查:http://www.cnblogs.com/2050/p/3913184.html 可能有用的demo: http://chaping.github.io/plupload/demo/index.html 二 基本使用 html: <ul id="filelist"></ul> <br /

多文件上传artDialog+plupload

一.效果展示 包括文件上传面板以及文件上传列表 二.介绍 长话短说,采用spring springMVC mybatis maven mysql,实现多文件上传功能,下载使用的是流的形式. 其中涉及的分页我会另开一片博客介绍. 三.准备材料 plupload artDialog 还有一份初始化插件的js文件 这些可以直接从我的分享连接里面下载 链接:http://pan.baidu.com/s/1c27cTAK 密码:btqj 还有jquery 这个自行下载 四.前台代码 引入样式以及js文件

web 文件上传组件 Plupload

Plupload官网:点击打开链接   建议下载最新版本,低版本会出现浏览器兼容问题. 最近公司有个项目需要在web端使用多文件上传功能,刚开始准备使用HTML5来做,但是IE9以下是都不支持的,于是想到了flash,在网上搜了下各种开源的组件,最后决定使用Plupload,下面来介绍一下该组件使用时遇到的一些问题以及解决方案. 先贴出配置参数: <script type="text/javascript"> // Initialize the widget when th

多图片/文件上传 - SwfUpload/PlUpload

<文件上传利器SWFUpload使用指南> <前端上传组件Plupload使用指南>

plupload+struts2实现文件上传下载

plupload是一款优秀的web前端上传框架.使用简单.功能强大.不仅支持文件多上传,进度条.拖拽方式选择文件更重要的是他会自己主动的识别浏览器来选择最合适的上传方式.废话少说先上图: 代码都是測试过的非常好用,仅仅要把jquery路径和版本号改动下面,去plupload官网把jar把下载下来就能够用了. 先看一下uploadUI.jsp源码.uploadUI.jsp就是上图显示的页面: <%@ page language="java" import="java.ut

文件上传插件 plupload ,上传一个,删除之前上传,才能继续上传

var uploader = new plupload.Uploader({ runtimes: 'html5,flash,silverlight,html4',//用来指定上传方式,指定多个上传方式请使用逗号隔开. browse_button: 'browse',//触发文件选择对话框的按钮,为那个元素id container: container, //用来指定Plupload所创建的html结构的父容器,默认为前面指定的browse_button的父元素.该参数的值可以是一个元素的id,也

文件上传工具plupload的使用后

plupload 是一款优秀的上传框架,操作简单,支持各大主流浏览器,提供拖拽选择文件,文件多上传,进度,删除,停止等多个接口,满足各种业务逻辑的需要.效果如图: 1.首先登录http://www.plupload.com下载plupload包,目前最新是plupload-2.1.3. 2.将plupload包直接拷贝到WebRoot路径下, 3.在页面中引入jar包 首先引入jquery包,因为jquery包是基础,plupload也依赖jquery包,再引入plupload.full.min

Web文件上传模块 Plupload

Plupload 是一个Web浏览器上的界面友好的文件上传模块,可显示上传进度.图像自动缩略和上传分块.可同时上传多个文件. 示例代码: <!-- Load Queue widget CSS and jQuery --> <style type="text/css">@import url(css/plupload.queue.css);</style> <script type="text/javascript" src=

文件上传plupload组件使用

这段时间一直在使用文件上传,简要的介绍一下文件上传的组件使用,先上一段代码. var uploader = new plupload.Uploader( { //用来指定上传方式,指定多个上传方式请使用逗号隔开,默认即为此,可不写 runtimes : 'html5,flash,silverlight,html4', //点击上传html标签的id,可以是a,button等 browse_button : 'hideBtn', //服务器端的页面上传地址 url : url, //文件的最大上传