/// <summary> /// BeginRequest 处理程序 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void context_BeginRequest(object sender, EventArgs e) { HttpApplication application = sender as HttpApplication; string caseParameter = HttpContext.Current.Request["Parameter"]; if (this.IsUploadRequest(application.Request) && caseParameter == "MyModule") { HttpWorkerRequest workerRequest = this.GetWorkerRequest(application.Context); Encoding contentEncoding = application.Context.Request.ContentEncoding; if (workerRequest != null) { byte[] boundary = this.ExtractBoundary(application.Request.ContentType, contentEncoding); string uploadId = application.Request.QueryString["uploadId"]; MimeUploadHandler handler = new MimeUploadHandler(new RequestStream(workerRequest), boundary, uploadId, contentEncoding); if (uploadId != null) { this.RegisterIn(application.Context, handler); } try { this.SetUploadState(application.Context, UploadState.ReceivingData); handler.Parse(); this.InjectTextParts(workerRequest, contentEncoding.GetBytes(handler.TextParts)); } catch (DisconnectedException) { this.CleanupFiles(application.Context); } } } }
/// <summary> /// 设置上传状态 /// </summary> /// <param name="context"></param> /// <param name="state"></param> private void SetUploadState(HttpContext context, UploadState state) { MimeUploadHandler uploadHandler = this.GetUploadHandler(context); if (uploadHandler != null) { uploadHandler.UploadStatus.SetState(state); } }
/// <summary> /// 获取上传文件集合 /// </summary> /// <param name="context"></param> /// <returns></returns> public static UploadedFileCollection GetUploadedFiles(HttpContext context) { MimeUploadHandler handler = (MimeUploadHandler)context.Items["_uploadHandler"]; if (handler != null) { return(UploadedFileCollection.ReadOnly(handler.UploadedFiles)); } return(null); }
/// <summary> /// 清除上传信息 /// </summary> /// <param name="context"></param> private void CleanupFiles(HttpContext context) { MimeUploadHandler uploadHandler = this.GetUploadHandler(context); if (uploadHandler != null) { foreach (UploadedFile file in uploadHandler.UploadedFiles) { File.Delete(file.ServerPath); } uploadHandler.UploadedFiles.Clear(); } }
private void RegisterIn(HttpContext context, MimeUploadHandler handler) { context.Items["_uploadHandler"] = handler; context.Application["_UploadStatus_" + handler.UploadStatus.UploadId] = handler.UploadStatus; }