【随笔】解决无flash插件上传附件

在不使用UI框架,upload上传附件需要使用flash插件支持,没有flash插件,上传附件解决方案,封装公共模块调用

  1. 下载uploadfive插件 :点击下载
    html
<div id="cd-signup">
           <p class="fieldset">
               <label class="image-replace cd-photo1" for="signup-idimage1"></label>
               <input class="full-width has-padding has-border"
                   id="signup-idimage1" type="file" name="upload">
               <input type="hidden" name="frontSide" id="frontSide">
               <div class="hidden" id="tip-queue1"></div>
            </p>
           <--存放上传附件的盒子-->
       <div id="filelist"></div>
    </div>

javascript

    //TODO 事件  
     $("#filelist").on("click", ".glyphicon-trash", this.proxy(this._on_deletefile_click));  //删除附件事件
     this.data = {mothed:"uploadfile",user:'1'}; //来自于父组件参数,自定义
    this.attachmentIds = []; //上传成功后返回的id
    this.attachmentList = []; //上传成功后返回的json对象
    //TODO 上传附件参数扩展
    var data = {
         "tokenid": $.cookie("tokenid"),
      };
    data = $.extend(data,this.data);
    var dataString = "";
    for(item in data){
        dataString +=item + "=" +data[item] +'&';
    }
   $('#signup-idimage1').uploadifive({
       'auto' : true,  //开启自动上传
       'uploadScript' : '/sms/modify.do?'+dataString, //上传地址和参数
       'fileObjName' : 'upload',
       'buttonText' : '上传附件', //按钮渲染文本
       'queueID' : 'tip-queue1', //上传附件展示列表,可定义【自定义div--filelist】
       'fileType' : '.', //上传附件类型
       'multi' : true,  //多个附件

       'fileSizeLimit'   : 5242880,
       'uploadLimit' : 10, //限制数量
       'queueSizeLimit'  : 10,
       'onUploadComplete' : this.proxy(function(file, data) {   //上传完成时操作
           var response =typeof data == 'string' ?  JSON.parse(data) : data;
           if (response.success ==false) {
               alert("系统异常!");
           } else {
               $("#frontSide").val(response.img); //隐藏域
               if(response.data && response.data.aaData && response.data.aaData.length > 0){ //里面属于业务模块;callAttachments方法返回父组件Id和附件对象;供父组件调用
                this.attachmentIds = [];
                this.attachmentList = [];
                this.attachmentList.push(response.data.aaData[0]);
                this.attachmentIds.push(response.data.aaData[0].id);
                this.callAttachments({
                    attachmentList:this.attachmentList[0],
                    attachmentId:this.attachmentIds[0]
                })
                //渲染附件
                $.each(response.data.aaData, function(idx, file) {
                    $("<div fileId=" +file.id+"><a  href='javascript:;'>" + file.fileName + "</a><span fileId=" +file.id+" class='glyphicon glyphicon-trash' style='cursor:pointer;margin-left:10px'></span></div>").appendTo($("#filelist")).data("fileid", file.id);
                 });
               }
           }
       }),
       onCancel : this.proxy(function(file) {   //取消上传时操作
          $("#frontSide").val("");
           /* 注意:取消后应重新设置uploadLimit */
           $data    = $("#signup-idimage1").data('uploadifive'),
           settings = $data.settings;
           settings.uploadLimit++;
           console.log(file.name + " 已取消上传~!");

       }),
       onFallback : function() {
           console.log("该浏览器无法使用!");
       },
       onUpload : function(file) {  //上传之前操作

       },
   });

图例
这里写图片描述

本实例采用的是Uploadify上传插件,.NET程序,源程序是从网上找的,但是有Bug,已经修改好,并标有部分注释。绝对好用,支持单文件、多文件上传,支持大文件上传,已经过多方面测试,保证好用。 以下附上Uploadify部分常用的参数介绍,要看全部的就去看其API文件了,一般在下载的包里都有。  uploader : uploadify.swf 文件的相对路径,该swf文件是一个带有文字BROWSE的按钮,点击后弹出打开文件对话框,默认值:uploadify.swf。   script : 后台处理程序的相对路径 。默认值:uploadify.php   checkScript :用来判断上传选择的文件在服务器是否存在的后台处理程序的相对路径   fileDataName :设置一个名字,在服务器处理程序中根据该名字来取上传文件的数据。默认为Filedata   method : 提交方式Post 或Get 默认为Post   scriptAccess :flash脚本文件的访问模式,如果在本地测试设置为always,默认值:sameDomain   folder : 上传文件存放的目录 。   queueID : 文件队列的ID,该ID与存放文件队列的div的ID一致。   queueSizeLimit : 当允许多文件生成时,设置选择文件的个数,默认值:999 。   multi : 设置为true时可以上传多个文件。   auto : 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 。   fileDesc : 这个属性值必须设置fileExt属性后才有效,用来设置选择文件对话框中的提示文本,如设置fileDesc为“请选择rar doc pdf文件”,打开文件选择框效果如下图:   fileExt : 设置可以选择的文件的类型,格式如:'*.doc;*.pdf;*.rar' 。   sizeLimit : 上传文件的大小限制 。   simUploadLimit : 允许同时上传的个数 默认值:1 。   buttonText : 浏览按钮的文本,默认值:BROWSE 。   buttonImg : 浏览按钮的图片的路径 。   hideButton : 设置为true则隐藏浏览按钮的图片 。   rollover : 值为true和false,设置为true时当鼠标移到浏览按钮上时有反转效果。   width : 设置浏览按钮的宽度 ,默认值:110。   height : 设置浏览按钮的高度 ,默认值:30。   wmode : 设置该项为transparent 可以使浏览按钮的flash背景文件透明,并且flash文件会被置为页面的最高层。 默认值:opaque 。   cancelImg :选择文件到文件队列中后的每一个文件上的关闭按钮图标 Uploadify还自带了很多参数及有用的方法和回调函数,都在API里,虽然是全英文的,但很容易看懂,这里就不说了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值