ajaxMutiUpload基于jQuery的多文件上传功能

一:说明

(1)此插件是基于jQuery1.4.2版本的,其它版本的jQuery没有测试

(2)经过firefox4,ie9(正式和兼容模式),chrome11

(3)感谢http://www.phpletter.com/Demo/AjaxFileUpload-Demo/此多文件上似插件是基于ajaxFileUploader改进的

二:相关代码

(1)前台页面源码

<form action="testAction!testMethod.ac" method="post" enctype="multipart/form-data">
    <input type="file" id="file1" name="file1" value="asdf"/><br/>
    <input type="file" id="file2" name="file2"/><br/>
    <input type="button" id="submitBtn" value="upload"/><br/>
</form>

(2)前台js

$(function () {
$('#submitBtn').click(function(){
$.ajaxMutiUpload({
      url:'testAction!testMethod.ac',
      fileElementId: "file1,file2",
      success: function(rs){
          if(rs.flag){
              alert('success');
          }else{
              alert('faild');
          }
      }
  });
});
});

(3)后台处理自己写,最后输出一个json,以java为例

//省去其它代码

super.print("{\"flag\":true}");

(4)------------------------------------------------------->>>>mutiFileUpload源码<<<<-------------------------------------------------------

jQuery.extend({
ajaxMutiUploadConfig: {
'iframeId': 'ajaxFileUploadIFrame',
'formId': 'ajaxFileUploadForm'
},
createAjaxMutiUploadForm: function (fileElementId, data) {//--------------------------step one: create form
var $form = $('<form/>');

//设置表单属性
$form.attr({
'action': param.url,
'method': 'post',
'name': $.ajaxMutiUploadConfig.iframeId,
'id': $.ajaxMutiUploadConfig.formId,
'target': $.ajaxMutiUploadConfig.iframeId,
'enctype': 'multipart/form-data',
'encoding': 'multipart/form-data' //fix ie
}).css({
'display': 'none'
});

//添加普通表单
if (data) {
for (var i in data) {
$form.append('<input type="hidden" name="' + i + '" value="' + data[i] + '"/>');
}
}

//添加文件类型的表单
var fileElementIds = fileElementId.split(",");
var i = 0;
for (i; i < fileElementIds.length; i++) {
var $oldFile = $('#' + fileElementIds[i]);
var $newFile = $oldFile.clone();
$oldFile.before($newFile);
$form.append($oldFile);
}
jQuery($form).appendTo('body');

return $form;
},
createAjaxMutiUploadIframe: function () {//--------------------------step two: create iframe
var $ifm = $('<iframe name="' + $.ajaxMutiUploadConfig.iframeId + '"/>'); //fix ie
$ifm.attr({
'id': $.ajaxMutiUploadConfig.iframeId
}).css({
'display':'none'
});

$($ifm).appendTo('body');
return $ifm.get(0);
},
ajaxMutiUpload: function (config) {//--------------------------step zero: 入口方法
//如果存在ajaxFileUploadIFrame和ajaxFileUploadForm则删除
var $ifm = $('#' + $.ajaxMutiUploadConfig.formId);
var $f = $('#' + $.ajaxMutiUploadConfig.iframeId);
$ifm.remove();
$f.remove();

//初始化参数
param = {
'url': '',
'fileElementId': '',
'success': null,
'data':''
};

param = jQuery.extend({}, jQuery.ajaxSettings, config);
var $formNew = jQuery.createAjaxMutiUploadForm(param.fileElementId, param.data);
var v_iframe = jQuery.createAjaxMutiUploadIframe();

//绑定iframeonload事件
if(v_iframe.attachEvent){
   v_iframe.attachEvent("onload", function(){
       $.ajaxMutiUploadCallBack();
   });
}else{
   v_iframe.onload = function(){
       $.ajaxMutiUploadCallBack();
   };
}

$formNew.submit();
},
ajaxMutiUploadCallBack: function(){
var $ajaxMutiUploadIframe = $('#' + $.ajaxMutiUploadConfig.iframeId);

var v_rs = $.parseJSON($ajaxMutiUploadIframe.contents().find('body').text());

//调用回调函数
param.success(v_rs);
}
});

(5)有问题Q吧195358385

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值