为了提供文件内容,我们需要首先需确定客户请求中发送的有文件内容,然后确定文件内容的位置。这部分对应的代码如下:
1HttpApplication app = sender as HttpApplication;
2 HttpWorkerRequest request = GetWorkerRequest(app.Context);
3
4 if (!IsUploadRequest(app.Request)) return; //不是文件上传,则退出
5
6 string sContentType = app.Request.ContentType.ToLower();
7 byte[] arrBoundary = GetMultipartBoundary(sContentType);
8 int ContentLength = app.Request.ContentLength; //信息体的总长度
9
10 DataReader dataReader = new DataReader(app.Context.Request.ContentEncoding,arrBoundary);
11 DateTime startDate = DateTime.Now;
12 byte[] arrBuffer = request.GetPreloadedEntityBody();
13 if (arrBuffer == null)
14 {
15 arrBuffer = new Byte[0];
16 tempFile.Close();
17 return; //没有读取到信息体
18 }
19 else
20 {
21 这里是对文件内容的处理
22 }
上面的代码中,我们先获取Asp.NET对客户端请求的处理对象HttpWorkerRequest,然后根据这个对象的ContentType属性是否为multipart/form-data来确定对应的请求是否有上传文件,如果没有上传文件,就不处理此请求,以提高处理效率。这样处理的依据是,在有文件上传的HTML Form中,对应的enctype属性为multipart/form-data。这样就解决了确定客户端请求中是否发送有文件内容。