问题描述
这是我的代码-----Html------<divstyle="width:100%;height:auto;margin-left:10px;margin-right:20px;"><formid="formImgs"method="post"enctype="multipart/form-data"><p><span>选择图片: </span><inputid="imgfile"type="file"name="imgfile"style="border:1px;"/><inputtype="hidden"id="ContractfileID"name="ContractfileID"style="width:80%"/><inputtype="hidden"id="PayableDat"name="PayableDat"/></p><ahref="#"class="easyui-linkbutton"style="width:75px;height:20px;background-color:#f39700;"onclick="saveImagess()">上传</a></form></div>-------js-------functionsaveImagess(){$('#formImg').form('submit',{url:"/EmprContract/BackCreateInterestFile",secureuri:false,timeout:10000,fileElementId:'imgfile',dataType:'json',onSubmit:function(){//dosomecheck//returnfalsetopreventsubmit;},success:function(data){varresult=eval('('+data+')');$.messager.progress('close');if(!result.success){$.messager.show({title:'提示',msg:result.message});}else{ImageShow(PayableDate);isUploadImg=true;$.messager.show({title:'提示',msg:"上传成功"});}}});}-------控制器-------publicJsonResultBackCreateInterestFile(stringContractfileID,Empr_Contractcontract,stringPayableDat){Resultr=newResult();ContractfileID=TempData["cpayContractID"].ToString();PayableDat=TempData["cpayPayableDate"].ToString();stringfileName="";foreach(stringfileinRequest.Files){HttpPostedFileBasefiless=Request.Files[file]asHttpPostedFileBase;if(filess!=null&&!string.IsNullOrEmpty(filess.FileName)){stringsaveFileName=getPrincipalFileName(filess,ContractfileID+"_"+PayableDat);filess.SaveAs(saveFileName);}}r.message=fileName;r.success=true;returnJson(r,"text/html");}privatestringgetPrincipalFileName(HttpPostedFileBasefile,stringcontractId){stringManageFileRoot=string.Format("{0}{1}",MvcApplication.MediaRoot,"PrincipalInterest");//uploadPath;//"TunnelManageFile";//服务器上的UpLoadFile文件夹必须有读写权限FileInfofInfo=newFileInfo(file.FileName);//stringguid=System.DateTime.Now.ToString("yyyyMMddHHmmssffff");//System.Guid.NewGuid().ToString();stringfileName=Path.GetFileNameWithoutExtension(file.FileName);//物理文件名guid_上传名称stringphfilename=string.Format("{0}{1}",contractId,fInfo.Extension);stringpath=string.Format("{0}\{1}",ManageFileRoot,phfilename);stringfilePath=string.Format("{0}",ManageFileRoot);stringpfilePath=Server.MapPath(string.Format(@"{0}",filePath));DirectoryInfodirectoryInfo=newDirectoryInfo(pfilePath);if(!directoryInfo.Exists){Directory.CreateDirectory(directoryInfo.FullName);}stringsaveFileName=Server.MapPath(string.Format(@"{0}",path));returnsaveFileName;}------错误---------
解决方案
解决方案二:
那就别设置超时啊
解决方案三:
传的多大的文件?
解决方案四:
现在html5已经流行,所以许多流行的jQuery插件都是在html5的客户端本地文件操作api上做一点封装。但是问题是,你要仔细研究其是否真正支持你的Request.Files这种东西,以及你索测试的环境是不是它真正支持的浏览器版本。
解决方案五:
有的插件挑jQuery必须是xxxx版本以上,有的插件挑浏览器必须是xxxx版本以上。一般来说,不用考虑兼容IE8以下的IE。而对于其它的浏览器,其适配的版本则更新了,可能只能支持最近3年的版本。
解决方案六:
我再强调一下,对于<inputid="imgfile"type="file"name="imgfile"style="border:1px;"/>
这种东西,首选的是单独封装的文件上传插件,然后是你自己手动调用html5的api来读取文件内容(实际上支持任意分块读取文件bytes)并ajax上传,最后才是使用jQuery的Form相关插件。使用Form提交方式,看似简单,实则底层非常“绕”,出了问题不好调试。