关于Request.BinaryRead的参数异常

问题描述

小弟现在项目要要用到Request.BinaryRead,byte[]fileData,formData;formData=Request.BinaryRead(Request.ContentLength);无论ContentLength为何值的时候都提示ArgumentException异常,当ContentLength能取到值的时候,这个(Request.BinaryRead)应该能读到数据吧,请大侠们指教,小弟刚参加工作.谢谢

解决方案

解决方案二:
这个问题还没有研究过帮你顶一下
解决方案三:
提供的代码太少了。寻梦E
解决方案四:
要使用Request.BinaryRead(),提交的表單應該設置enctype為'multipart/form-data',如下,LZ請檢查一下:<formid="up"method=postname=""action="cuscontactatt.asp"enctype="multipart/form-data"></form>
解决方案五:
已经设置了啊:这是代码:(asp.net2.0)1.html部分:<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><head><title>FCKeditor-UploadersTests</title><scriptlanguage="javascript">functionSendFile(){varsUploaderUrl=cmbUploaderUrl.value;if(sUploaderUrl.length==0)sUploaderUrl=txtCustomUrl.value;if(sUploaderUrl.length==0){alert('PleaseprovideyourcustomURLorselectadefaultone');return;}eURL.innerHTML=sUploaderUrl;txtUrl.value='';frmUpload.action=sUploaderUrl;frmUpload.submit();}functionOnUploadCompleted(errorNumber,fileUrl,fileName,customMsg){switch(errorNumber){case0://NoerrorstxtUrl.value=fileUrl;alert('Fileuploadedwithnoerrors');break;case1://Customerroralert(customMsg);break;case10://CustomwarningtxtUrl.value=fileUrl;alert(customMsg);break;case201:txtUrl.value=fileUrl;alert('Afilewiththesamenameisalreadyavailable.Theuploadedfilehasbeenrenamedto"'+fileName+'"');break;case202:alert('Invalidfile');break;case203:alert("Securityerror.Youprobablydon'thaveenoughpermissionstoupload.Pleasecheckyourserver.");break;default:alert('Erroronfileupload.Errornumber:'+errorNumber);break;}}</script></head><body><tablecellSpacing="0"cellPadding="0"width="100%"border="0"height="100%"><tr><td><tablecellSpacing="0"cellPadding="0"width="100%"border="0"><tr><tdnowrapstyle="height:43px">Selectthe"FileUploader"touse:<br><selectid="cmbUploaderUrl"name="Select1"><optionselectedvalue="asp/upload.asp">ASP</option><optionvalue="php/upload.php">PHP</option><optionvalue="Upload.aspx?type=image">aspx</option></select></td><tdnowrapstyle="height:43px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><tdwidth="100%"style="height:43px">CustomUploaderURL:<BR><inputid="txtCustomUrl"style="WIDTH:100%;BACKGROUND-COLOR:#dcdcdc"disabledtype="text"></td></tr></table><br><tablecellSpacing="0"cellPadding="0"width="100%"border="0"><tr><tdnoWrap><formid="frmUpload"target="UploadWindow"enctype="multipart/form-data"action=""method="post">Uploadanewfile:<br><inputtype="file"name="NewFile"><br><inputtype="button"value="SendittotheServer"onclick="SendFile();"></form></td><tdstyle="WIDTH:16px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td><tdvAlign="top"width="100%">UploadedFileURL:<br><INPUTid="txtUrl"style="WIDTH:100%"readonlytype="text"></td></tr></table><br>PostURL:<spanid="eURL">&nbsp;</span></td></tr><tr><tdheight="100%"><iframename="UploadWindow"width="100%"height="100%"></iframe></td></tr></table></body></html>
解决方案六:
2.后台代码部分(我是想用html页面Post数据到aspx页面)usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Collections;usingSystem.IO;usingSystem.Text;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Web.UI.HtmlControls;usingSystem.Xml;usingSystem.Collections.Specialized;publicpartialclassUpload:System.Web.UI.Page{publicvoidSendResults(interrorNumber,stringfileUrl,stringfileName,stringcustomMsg){StringBuildertext=newStringBuilder();text.Append("<scripttype="text/javascript">");text.Append("window.parent.OnUploadCompleted("+errorNumber+",""+fileUrl.Replace(""","\"")+"",""+fileName.Replace(""","\"")+"",""+customMsg.Replace(""","\"")+"");n");text.Append("</script>");Response.Write(text.ToString());Response.End();}publicvoidGetConfig(stringtype,outstring[]allowedExt,outstring[]denyedExt,outstringsavePath,outlongmaxSize){XmlDocumentdoc=newXmlDocument();doc.Load(Server.MapPath(@".Config.xml"));XmlElementroot=doc.DocumentElement;XmlNodeListimageNodelist=root.GetElementsByTagName(type);allowedExt=imageNodelist[0].FirstChild.InnerText.Trim().Split('|');denyedExt=imageNodelist[0].LastChild.InnerText.Trim().Split('|');savePath=root.GetElementsByTagName("userPath").Item(0).InnerText.Trim();try{maxSize=Convert.ToInt64(root.GetElementsByTagName("maxSize").Item(0).InnerText.Trim());}catch{maxSize=1028*1024;}}protectedvoidPage_Load(objectsender,EventArgse){string[]allowedExt=newstring[]{},denyedExt=newstring[]{};stringsavePath=String.Empty;longmaxSize=10000;stringtype=Request.QueryString["Type"];if(type!=null&&type!=string.Empty)type=type.ToLower();elsetype="file";if(type=="image"){GetConfig("image",outallowedExt,outdenyedExt,outsavePath,outmaxSize);}if(type=="file"){GetConfig("file",outallowedExt,outdenyedExt,outsavePath,outmaxSize);}if(type=="flash"){GetConfig("flash",outallowedExt,outdenyedExt,outsavePath,outmaxSize);}if(savePath==string.Empty||savePath=="")savePath="~/UserFiles/";if(!savePath.EndsWith("/"))savePath+="/";/***********************************************************************byte[]bytes1=System.Text.Encoding.Default.GetBytes("这是字符串nnnn");byte[]bytes2=newbyte[]{1,33,23,3,0,56,55,235,5};//二进制数byte[]bytes=newbyte[bytes1.Length+bytes2.Length];//合并二进制流MemoryStreamms=newMemoryStream(bytes);ms.Write(bytes1,0,bytes1.Length);ms.Write(bytes2,0,bytes2.Length);intcount=0,pos=0;//开始找四个'n'for(inti=0;i<bytes.Length;i++){if(bytes[i]==(int)'n'){count++;if(count==4){pos-=4;break;}}}if(count==4){//这里,bytes字节数组里从0到pos的位置就是你要的字符串//从pos+5开始到最后,就是你要的二进制}***********************************************************************/byte[]fileData,formData;Request.BinaryRead(1);formData=Request.BinaryRead(Request.ContentLength);stringtest=formData.ToString();Response.Write(test);stringhead=String.Empty;Encodingencoding=Encoding.UTF8;longpos=0;for(longi=0;i<formData.LongLength;i++){if(formData[i]==(byte)'r'&&formData[i+1]==(byte)'n'&&formData[i+2]==(byte)'r'&&formData[i+3]==(byte)'n'){pos=i;break;}}if(pos==0){Response.End();return;}head=encoding.GetString(formData,0,(int)pos);fileData=newbyte[formData.LongLength-pos-3];Array.Copy(formData,pos+4,fileData,0,formData.LongLength-pos-4);/*********************************************************************//传来的表单形式是://"-----------------------------7d5fa3820f84rnContent-Disposition:form-data;name="NewFile";filename="F:\Documents\4(10995).jpg"rnContent-Type:image/pjpegrnrn//后面是文件数据*********************************************************************/head=head.ToLower();head=head.Remove(0,head.IndexOf("rn")+2);head=head.Replace(""","");stringpostFileName=string.Empty;stringfileName;//nopathstringfileType,fileExt;postFileName=head.Substring(0,head.IndexOf("rn"));//Content-Disposition:form-data;name="NewFile";filename="F:\Documents\4(10995).jpg"fileType=head.Remove(0,postFileName.Length+3);//returns:Content-Type:image/pjpegpostFileName=postFileName.Substring(postFileName.IndexOf("filename=")+"filename=".Length);//C:pathnamefileName=Path.GetFileName(postFileName);fileExt=fileName.Substring(fileName.LastIndexOf(".")+1);if(fileData.LongLength>maxSize){SendResults(2,ResolveUrl(savePath+fileName),fileName,"Toolarge");return;}boolisallow=false;foreach(stringextindenyedExt){if(ext==fileExt){isallow=false;SendResults(202,ResolveUrl(savePath+fileName),fileName,"forrbiden");return;}}foreach(stringextinallowedExt){if(ext==fileExt){isallow=true;break;}}if(isallow){stringtmpPath=Server.MapPath(savePath);if(!Directory.Exists(tmpPath)){try{Directory.CreateDirectory(tmpPath);}catch{SendResults(200,ResolveUrl(savePath+fileName),fileName,"没有写入权限");}}//Response.BinaryWrite(fileData);FileStreamsavefileStream=newFileStream(tmpPath+fileName,FileMode.OpenOrCreate,FileAccess.ReadWrite);for(longi=0;i<fileData.LongLength;i++){savefileStream.WriteByte(fileData[i]);}savefileStream.Close();SendResults(0,ResolveUrl(savePath+fileName),fileName,"Noerrors");}}}
解决方案七:
自己顶一下,真得很急.谢谢
解决方案八:
自己再顶一下,真得很急.谢谢

时间: 2024-10-04 15:03:35

关于Request.BinaryRead的参数异常的相关文章

request请求获取参数的实现方法(post和get两种方式)_javascript技巧

提交表单代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>测试请求参数</h1> <!-- 注意href和action都是写的完整的名称:项目名和资源路径名 --> <!-- 下面一句

规则引擎-调用ilog jrules 报未知的参数异常

问题描述 调用ilog jrules 报未知的参数异常 问题现象: 在java项目中使用了ILOG JRules规则引擎,当并发调用规则时,就会报java.lang.IllegalArgumentException: 未知的参数 "carPricingOutputXOMList"异,但是不用并发,单独调就不会报错. 请问各位大神,有遇到这样问题的吗?到底是什么原因.请帮忙指点指点.

android中fragment切换的时候遇到非法参数异常的问题

问题描述 android中fragment切换的时候遇到非法参数异常的问题 FragmentTabHost中加入了两个fragment,片段1和片段2.运行后从片段1到片段2没有出问题,当从片段2再回到片段1的时候出现非法参数异常. 异常代码如图 找到错误主要原因是设置了一个布局的ID: gridview_layout.setId(CAL_LAYOUT_ID); 请问为什么在fragment中设置id切换片段后会发生异常? 解决方案 你这两个页面的id相同 但是页面不是同一种类型的 有冲突

url中的=被转义为%3D,request.getparameter()获取参数失败,

问题描述 url中的=被转义为%3D,request.getparameter()获取参数失败, 最近在做微信开放平台,发现微信回调之后会把原来的url中的"="转义为%3D ,导致在request.getparameter()中获取的时候,获取不到参数的值,获取到的为null,怎么问题怎么解决呢? 解决方案 先用urldecode解码,然后再用split切分,获取.

java遍历http请求request的所有参数实现方法_java

通过程序遍历http请求的所有参数放到hashmap中,用的时候方便了. 如果参数值有中文,那么需要在程序中添加filter转码,或者在下面程序里,对paramValue转码 如下所示: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Map map = new HashMap(); Enumeration para

Spring-boot 配置Aop获取controller里的request中的参数以及其返回值

  示例: 当前url:http://localhost:8080/CarsiLogCenter_new/idpstat.jsp?action=idp.sptopn request.getRequestURL() http://localhost:8080/CarsiLogCenter_new/idpstat.jsp request.getRequestURI() /CarsiLogCenter_new/idpstat.jsp request.getContextPath()/CarsiLogC

JScript中遍历Request表单参数集合的方法

 JScript下有一个Enumerator对象可以遍历集合.根据它的文档写了以下程序,可以遍历整个Request.QueryString集合: 代码如下: var params = new Enumerator(Request.QueryString); while (!params.atEnd()) { Response.Write(params.item() + ":" + Request.QueryString(params.item()) + "<br /&g

如何处理GCHandle.Alloc()的参数异常?

问题描述 各位大侠,关于以下问题,强烈请求帮助!想获取当前自定义控件对象的地址,原VB6.0中用ret=objPtr(Me),程序转到VB.NET环境中,将自定义控件编写定义为类,而上述语句则改写为:ImportsSystem.Runtime.InteropServicesDimsfHandleAsGCHandleDimretAsIntegersfHandle=GCHandle.Alloc(Me,GCHandleType.Pinned)ret=sfHandle.AddrOfPinnedObjec

使用JScript遍历Request表单参数集合_应用技巧

复制代码 代码如下: var params = new Enumerator(Request.QueryString); while (!params.atEnd()) { Response.Write(params.item() + ":" + Request.QueryString(params.item()) + "<br />"); params.moveNext(); } 美中不足的是,Request对象本身不是集合,所以不能对Request对