Ajax文件上传插件很多,但兼容性各不一样,许多是对ie不兼容的,另外项目中是要求将网页内容嵌入到桌面端应用的,这样就不允许带flash的上传插件了,如:jquery uploadify。。。悲剧

 

对于Ajax文件上传,大体是有:

  1、创建一个input type="file" 的文件上传按钮,根据其id监听绑定其change事件,在事件中用jquery创建一个iframe,嵌入添加隐藏form,同时创建input type="file",id相同的文件上传按钮,并传入其他需要提交的数据,然后提交,提交完成后移除一个input type="file",这样用bind或on的绑定就对新的input 框失效,需要重新再绑定一次change事件,以前的jquery是可以使用live函数代替的,现在只能在文件上传成功后再绑定一次change事件。

 1 $(function() {
 2     uploadFile("fileData",'cn.ftiao.cm.model.LiveCourse','',"CI");
 3 });
 4 
 5 function uploadFile(id,classFullName,jsonStrValue,preFileName){
 6     $("#"+id).on("change", function(){
 7         // 上传方法
 8         $.ajaxFileUpload({
 9             url:$("#"+id).attr("data-url-upload"),            //需要链接到服务器地址
10             secureuri:false,
11             type:"post",
12             fileElementId:id,                        //文件选择框的id属性
13             dataType: 'json', 
14             data:{
15                 "classFullName":classFullName,
16                 "jsonStrValue":"",
17                 "preFileName":preFileName
18             },
19             //服务器返回的格式,可以是json
20             success: function (data, status){          //相当于java中try语句块的用法
21                 $("#courseIconImg").attr("src",$(".ctx").val()+"/images/img-class.png");
22                 alert("hello");
23                 //先将原有的上传展示清除
24                 $("#" + id).nextAll("span").remove();
25                 $("#courseIcon").val(data.outputFileName);
26 //                    $("#coursewareFile").val(data.outputFileName);
27                     var uploadHtml = "<span id='"+data.outputPreFileName+"_livelesson_div' style='color:#FFFFFF;'>";
28                     uploadHtml +=  data.fileUploadName ;
29                     uploadHtml += "<a  name='_LIVELESSON_PRIVIEW'>&nbsp;预览 &nbsp;</a><a  name='_LIVELESSON_DEL'>&nbsp;删除&nbsp;</a>";
30                     uploadHtml += "</span>";
31 //                    $("#"+id).parents("li").append(uploadHtml);
32                     uploadFile("fileData",'cn.ftiao.cm.model.LiveCourse','',"CI");
33             },
34             error: function (data, status, e)    //相当于java中catch语句块的用法
35             {
36                 alert(e);
37             }
38         });
39     });
40     return false;
41 }
View Code

相关文章: