转载,JS实现上传看得不多,.NET直接拖控件太LOW
http://blog.csdn.net/xuexiaodong009/article/details/45556431
ajax已经很普遍了,但使用ajax上传文件自己却一直都没有涉及,我只知道挺复杂的,上传文件不同于上传一般的表单数据,必须特殊处理,知道一般ajax使用上传都是应用一个虚拟的iframe,但由于项目需要,在网上找了找,没想到找到了两个支持ajax上传文件的jquery插件,jquery.uploadify.js和dropzone.min.js两个都可以实现ajax上传文件,效果也不错。
1使用jquery.uploadify.js上传文件
这种上传方式,使用了Flash,因此需要引用一个特殊的js文件swfobject.js,低版本的需要引用,高版本的这个文件已经包含在jquery.uploadify.js中了。另外低版本的参数和高版本的参数也不太一样了。
使用Uploadify v3.2.1的完整前台代码
- <htmlxmlns="http://www.w3.org/1999/xhtml">
- headrunat="server">
- title></scriptsrc="Scripts/jquery-1.8.0.min.js"type="text/javascript"scriptscriptsrc="Styles/jquery.uploadify.js"type="text/javascript"linkhref="Styles/uploadify.css"rel="stylesheet"type="text/css"/>
- scripttype="text/javascript" $(document).ready(function(){
-
- $("#uploadify").uploadify({
- swf:'Styles/uploadify.swf',
- uploader:'Handler1.ashx?OperationType=upfile',//后台的处理地址
- fileTypeDesc:'请选择excel文件',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> buttonText:'请选择excel文件',
- fileTypeExts:'*.xls',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'auto':false,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> onSelectError:function(file,errorCode,errorMsg){
- switch(errorCode){
- case-100:
- alert("上传的文件数量已经超出系统限制的"+$('#uploadify').uploadify('settings','queueSizeLimit')+"个文件!");
- break;
- case-110:
- alert("文件["+file.name+"]大小超出系统限制的"+$('#uploadify').uploadify('settings','fileSizeLimit')+"大小!");
- break;
- case-120:
- alert("文件["+file.name+"]大小异常!");
- case-130:
- alert("文件["+file.name+"]类型不正确!");
- }
- },108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> onFallback:function(){
- alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
- },248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> //上传到服务器,服务器返回相应信息到data里
- onUploadSuccess:function(file,data,response){
- alert(data);
- onSelect:function(fileObj){
- alert("文件名:"+fileObj.name+"rn"+
- "文件大小:"+fileObj.size+"rn"+
- "创建时间:"+fileObj.creationdate+"rn"+
- "最后修改时间:"+fileObj.modificationdate+"rn"+
- "文件类型:"+fileObj.type
- );
- });
- });
- functiondoUplaod(){
- $('#uploadify').uploadify('upload','*');
- }
- functioncloseLoad(){
- $('#uploadify').uploadify('cancel',0); background-color:inherit; font-weight:bold">headbodyformid="form1"runat="server"divdivid="fileQueue"inputtype="file"name="uploadify"id="uploadify"pahref="javascript:doUplaod()">上传a>|
- ahref="javascript:closeLoad()">取消上传formhtml>
Uploadify v2.1.0的写法
由于没有swfobject.js,需要添加引用
scriptsrc="Scripts/swfobject.js"type="text/javascript">
另外部分参数也不一样,例如uploader,script
完整的前台代码
scriptsrc="Scripts/jquery.uploadify.v2.1.0.js"type="text/javascript"
- link
href="Scripts/uploadify.css"rel="stylesheet"type="text/css"/>
- $("#uploadify").uploadify({
- 'uploader':'Scripts/uploadify1.swf',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'script':'Handler1.ashx?OperationType=upfile',
- 'cancelImg':'Scripts/cancel.png',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'folder':'UploadFile',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'queueID':'fileQueue',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'auto':false,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'multi':false,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'fileExt':'*.doc;*.xls',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'fileDesc':'请选择excel文件',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> 'onSelect':function(e,queueId,fileObj){
- alert("唯一标识:"+queueId+"rn"+
- "文件名:"+fileObj.name+"rn"+
- "文件大小:"+fileObj.size+"rn"+
- "创建时间:"+fileObj.creationDate+"rn"+
- "最后修改时间:"+fileObj.modificationDate+"rn"+
- "文件类型:"+fileObj.type
- );
- ahref="javascript:$('#uploadify').uploadifyUpload()"ahref="javascript:$('#uploadify').uploadifyClearQueue()">
2使用dropzone.min.js上传文件
没有使用Flash,但对浏览器要求比较高,例如IE10以上才支持,应该是使用了html5的技术
完整的前端代码、
scriptsrc="Scripts/dropzone.min.js"type="text/javascript"linkhref="Scripts/dropzone.css"rel="stylesheet"type="text/css" jQuery(function($){
- Dropzone.autoDiscover=false;
- try{
- varmyDropzone=newDropzone("#dropzone",{
- paramName:"FileData",//Thenamethatwillbeusedtotransferthefile
- maxFilesize:5,//MB
- dictRemoveFile:'移除文件',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> dictCancelUpload:'取消上传',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> addRemoveLinks:true,108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> uploadMultiple:false,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> acceptedFiles:'.xls',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> autoProcessQueue:true,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> dictRemoveFile:"关闭",108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> dictFileTooBig:'此文件过大',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> dictCancelUploadConfirmation:'确定取消上传吗?',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> dictInvalidInputType:"不支持此类型文件上传!",248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> parallelUploads:1,//限制上传文件数
- url:"Handler1.ashx?OperationType=upfile",248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> init:function(){
- this.on("success",function(file){
- //console.log("File"+file.name+"uploaded");
- alert("文件"+file.name+"上传成功");
- this.on("complete",248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> this.removeFile(file);
- this.on("removedfile",function(file){
- //alert(file.name);
- /*accept:function(file,done){
- //if(file.name=="11.jpg"){
- //done("Naha,youdon't.");
- //}
- //else{
- done();
- success:function(file,data){
- if(data.status===1){
- $scope.uploadImage=data.message;
- $scope.listUserImages();
- }else{
- //alertService.showAlert({
- //content:data.message,248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> //type:'warning'
- //});
- //$('.dz-error-mark').show();
- //alert(data.message);
- dictDefaultMessage:
- 'spanclass="bigger-150bolder"iclass="ace-iconfafa-caret-rightred"ispan>文件spanclass="smaller-80grey">点击>br/>iclass="upload-iconace-iconfafa-cloud-uploadbluefa-3x">',248); line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> dictResponseError:'Errorwhileuploadingfile!',108); list-style:decimal-leading-zero outside; color:inherit; line-height:18px; margin:0px!important; padding:0px 3px 0px 10px!important"> //changethepreviewTemplatetouseBootstrapprogressbars
- previewTemplate:"divclass="dz-previewdz-file-preview">ndivclass="dz-details"divclass="dz-filename"spandata-dz-namedivclass="dz-size"data-dz-sizeimgdata-dz-thumbnail/>ndivclass="progressprogress-smallprogress-stripedactive"divclass="progress-barprogress-bar-success"data-dz-uploadprogressdivclass="dz-success-mark"divclass="dz-error-mark"divclass="dz-error-message"spandata-dz-errormessage>"
- }catch(e){
- alert('Dropzone.jsdoesnotsupportolderbrowsers!');
- form
id="dropzone"runat="server"action="Handler1.ashx?OperationType=upfile"class="dropzonedz-clickable"enctype="multipart/form-data"method="post"divclass="dz-message"style="width:50px;height:50px;"divid="FileBed">点击上传文件
- inputtype="file"multiple="multiple"class="dz-hidden-input"style="visibility:hidden;position:absolute;top:0px;left:0px;height:0px;width:0px;">
3后台处理代码
publicclassHandler1:IHttpHandler
- {
- voidProcessRequest(HttpContextcontext)
- {
- stringoperatype=context.Request.QueryString["OperationType"];
- if(operatype=="upfile")
- HttpPostedFilefile=context.Request.Files["FileData"];
- if(file!=null)
- stringfullPath=System.IO.Path.Combine(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"update"),DateTime.Now.Date.ToString("yyyyMMdd"));
- file.SaveAs(fullPath+file.FileName);
- context.Response.ContentType="text/plain";
- context.Response.Write("上传成功");
- boolIsReusable
- get
- returnfalse;
- }
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|