這篇文章將為大家詳細(xì)講解有關(guān)ajaxFileupload如何實(shí)現(xiàn)多文件上傳功能,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)建站專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都網(wǎng)站制作、庫(kù)車網(wǎng)絡(luò)推廣、微信平臺(tái)小程序開(kāi)發(fā)、庫(kù)車網(wǎng)絡(luò)營(yíng)銷、庫(kù)車企業(yè)策劃、庫(kù)車品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供庫(kù)車建站搭建服務(wù),24小時(shí)服務(wù)熱線:028-86922220,官方網(wǎng)址:www.cdcxhl.com
打開(kāi)google 搜索"ajaxFileupload' ‘多文件上傳"可以搜到許許多多類似的,那我為什么還要寫一下呢?
一個(gè)是對(duì)之前大神的貢獻(xiàn)表示感謝;二個(gè)是自己知識(shí)的總結(jié);三個(gè)是自己在原有的基礎(chǔ)上改動(dòng)了下,在此記錄,可能幫助其他朋友。
用過(guò)這個(gè)插件的都知道這個(gè)插件的基本用法,我就不廢話,直接上代碼。
我需要實(shí)現(xiàn)多個(gè)文件上傳,之前的做法是定義多個(gè)不同id的input,然后把a(bǔ)jaxfileuplod方法放在for循環(huán)里,這個(gè)方法是在網(wǎng)上看到的,我覺(jué)得不怎么好,后面在網(wǎng)上找到的,就高級(jí)點(diǎn)了,直接改源碼(因?yàn)樽髡吆镁脹](méi)有跟新了,也確實(shí)滿足不了要求了)。接下來(lái)看看我是怎么改的。
引用網(wǎng)上的做法:
1、看沒(méi)有修改前的代碼
var oldElement = jQuery('#' + fileElementId); var newElement = jQuery(oldElement).clone(); jQuery(oldElement).attr('id', fileId); jQuery(oldElement).before(newElement); jQuery(oldElement).appendTo(form);
很容易看出,這個(gè)就是把id為什么的input加到from里去,那么要實(shí)現(xiàn)多個(gè)文件上傳,就改成下面的樣子:
if(typeof(fileElementId) == 'string'){ fileElementId = [fileElementId]; } for(var i in fileElementId){ var oldElement = jQuery('#' + fileElementId[i]); var newElement = jQuery(oldElement).clone(); jQuery(oldElement).attr('id', fileId); jQuery(oldElement).before(newElement); jQuery(oldElement).appendTo(form); }
這樣改之后,初始化的代碼就要這么寫:
$.ajaxFileUpload({ url:'/ajax.php', fileElementId:['id1','id2']//原先是fileElementId:'id' 只能上傳一個(gè) });
到這里,確實(shí)可以上傳多個(gè)文件,但是對(duì)于我來(lái)說(shuō)新問(wèn)題又來(lái),多個(gè)id,我的界面的文件不是固定的,是動(dòng)態(tài)加載的,那么id要?jiǎng)討B(tài)生成,我覺(jué)得太麻煩,為什么不取name呢?然后把以上代碼改為如下:
if(typeof(fileElementId) == 'string'){ fileElementId = [fileElementId]; } for(var i in fileElementId){ //按name取值 var oldElement = jQuery("input[name="+fileElementId[i]+"]"); oldElement.each(function() { var newElement = jQuery($(this)).clone(); jQuery(oldElement).attr('id', fileId); jQuery(oldElement).before(newElement); jQuery(oldElement).appendTo(form); }); }
這樣改了 那么就可以實(shí)現(xiàn)多組多個(gè)文件上傳,接下來(lái)看我是怎么應(yīng)用的。
html:
多組多個(gè)文件 第一組 第二組
js:
/** * Created with IntelliJ IDEA. * User: Administrator * Date: 13-7-3 * Time: 上午9:20 * To change this template use File | Settings | File Templates. */ $(document).ready(function () { $("#up1").click(function(){ var temp = ["gridDoc","caseDoc"]; ajaxFileUpload(temp); }); $("#addInput").click(function(){ addInputFile(); }); }); //動(dòng)態(tài)添加一組文件 function addInputFile(){ $("#calculation_model").append(""+ " "); } //直接使用下載下來(lái)的文件里的demo代碼 function ajaxFileUpload(id) { //starting setting some animation when the ajax starts and completes $("#loading").ajaxStart(function(){ $(this).show(); }).ajaxComplete(function(){ $(this).hide(); }); /* prepareing ajax file upload url: the url of script file handling the uploaded files fileElementId: the file type of input element id and it will be the index of $_FILES Array() dataType: it support json, xml secureuri:use secure protocol success: call back function when the ajax complete error: callback function when the ajax failed */ $.ajaxFileUpload({ url:'upload.action', //secureuri:false, fileElementId:id, dataType: 'json' } ) return false; }"+ " "+ "
我后臺(tái)是用的struts2,strtus2的上傳是比較簡(jiǎn)單的,只要聲明約定的名字,即可得到文件對(duì)象,和名稱,代碼如下:
package com.ssy.action; import com.opensymphony.xwork2.ActionSupport; import org.apache.commons.io.FileUtils; import org.apache.struts2.util.ServletContextAware; import javax.servlet.ServletContext; import java.io.*; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; /** * Created with IntelliJ IDEA. * User: Administrator * Date: 13-7-2 * Time: 下午4:08 * To change this template use File | Settings | File Templates. */ public class Fileupload extends ActionSupport implements ServletContextAware { private File[] gridDoc,caseDoc; private String[] gridDocFileName,caseDocFileName; private ServletContext context; public String execute(){ for (int i = 0;i關(guān)于“ajaxFileupload如何實(shí)現(xiàn)多文件上傳功能”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
新聞標(biāo)題:ajaxFileupload如何實(shí)現(xiàn)多文件上傳功能
文章出自:http://weahome.cn/article/jhschi.html