亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

asp.net 大文件上傳 之 改版了的SlickUpload.HttpUploadModule(Krystalware.SlickUpload.dll)

2024-07-10 13:20:06
字體:
來源:轉載
供稿:網友
/200905/yuanma/SlickUpload.rar
/200905/yuanma/Krystalware.SlickUpload.rar

復制代碼 代碼如下:


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Text;
using System.Reflection;
namespace Krystalware.SlickUpload
{
/**
* [[服務器端WebConfig.XML設置]]
*
* 需要在WebConfig.XML中進配置,以下結于
*<configuration>
<appSettings>
<add key="HttpUploadModulePageGoOn" value="*.*;"/>
<add key="HttpUploadModulePageJump" value="x.aspx;"/>
</appSettings>
*<system.web>
<httpModules>
<add type="SlickUpload.HttpUploadModule, SlickUpload" />
</httpModules>
<httpRuntime maxRequestLength="1000000" />
*</system.web>
*</configuration>
*
[說明]
1、如果滿足<HttpUploadModulePageJump>所設置的頁面,則不使用大文件上傳功能,直接跳出
/// 當沒有設置[HttpUploadModulePageJump]則返回false;
/// 當設置[HttpUploadModulePageJump]中有[*.*;]時則返回true
/// 當設置[HttpUploadModulePageJump]中的頁面等同與所要處理頁面的后綴時,則返回true,否則返回false
2、如果不滿足<HttpUploadModulePageJump>所設置的頁面則繼續進行下一判斷.
3、如果滿足<HttpUploadModulePageGoOn>所設置的頁面,則使用大文件上傳功能;否則跳出
/// 當沒有設置[HttpUploadModulePageGoOn]則返回false;
/// 當設置[HttpUploadModulePageGoOn]中有[*.*;]時則返回true
/// 當設置[HttpUploadModulePageGoOn]中的頁面等同與所要處理頁面的后綴時,則返回true,否則返回false
*
*
**/
public sealed class HttpUploadModule : IHttpModule
{
public HttpUploadModule()
{
}
private void CleanupFiles(HttpContext context)
{
MimeUploadHandler handler1 = this.GetUploadHandler(context);
if (handler1 != null)
{
foreach (UploadedFile file1 in handler1.UploadedFiles)
{
File.Delete(file1.ServerPath);
}
handler1.UploadedFiles.Clear();
}
}
private void ClearUploadStatus()
{
HttpUploadModule.RemoveFrom(HttpContext.Current.Application, HttpUploadModule.GetUploadStatus().UploadId);
}
private void context_BeginRequest(object sender, EventArgs e)
{
HttpApplication application1 = sender as HttpApplication;
//begin: jiang zhi 2005.10.15+
//如果滿足<HttpUploadModulePageJump>所設置的頁面,則不使用大文件上傳功能,直接跳出
if (IsJump(application1)) return;
//如果滿足<HttpUploadModulePageGoOn>所設置的頁面,則使用大文件上傳功能;
//如果不滿足<HttpUploadModulePageGoOn>所設置的頁面,則不使用大文件上傳功能;直接跳出
if (!IsGoOn(application1)) return;
//end
if (this.IsUploadRequest(application1.Request))
{
HttpWorkerRequest request1 = this.GetWorkerRequest(application1.Context);
Encoding encoding1 = application1.Context.Request.ContentEncoding;
if (request1 != null)
{
byte[] buffer1 = this.ExtractBoundary(application1.Request.ContentType, encoding1);
string text1 = application1.Request.QueryString["uploadId"];
MimeUploadHandler handler1 = new MimeUploadHandler(new RequestStream(request1), buffer1, text1, encoding1);
if (text1 != null)
{
this.RegisterIn(application1.Context, handler1);
}
try
{
this.SetUploadState(application1.Context, UploadState.ReceivingData);
handler1.Parse();
this.InjectTextParts(request1, encoding1.GetBytes(handler1.TextParts));
}
catch (DisconnectedException)
{
this.CleanupFiles(application1.Context);
}
}
}
}
/// <summary>
/// 當沒有設置[HttpUploadModulePageJump]則返回false;
/// 當設置[HttpUploadModulePageJump]中有[*.*;]時則返回true
/// 當設置[HttpUploadModulePageJump]中的頁面等同與所要處理頁面的后綴時,則返回true,否則返回false
/// </summary>
/// <param></param>
/// <returns></returns>
private bool IsJump(HttpApplication application1)
{
bool result = false;
if (application1.Application["HttpUploadModulePageJump"] != null)
{
string[] al = ((string)application1.Application["HttpUploadModulePageJump"]).Split(';');
if (al != null )
{
for(int i = 0; i < al.Length; i++)
{
string temp= al[i];//"OfficeServer.aspx";
if (temp =="*.*")
{
result = true;
break;
}
if (application1.Request.Path.EndsWith(temp))
{
result = true;
break;
}
}
}
}
return result;
}
/// <summary>
/// 當沒有設置[HttpUploadModulePageGoOn]則返回false;
/// 當設置[HttpUploadModulePageGoOn]中有[*.*;]時則返回true
/// 當設置[HttpUploadModulePageGoOn]中的頁面等同與所要處理頁面的后綴時,則返回true,否則返回false
/// </summary>
/// <param></param>
/// <returns></returns>
private bool IsGoOn(HttpApplication application1)
{
bool result = false;
if (application1.Application["HttpUploadModulePageGoOn"] != null)
{
string[] al = ((string)application1.Application["HttpUploadModulePageGoOn"]).Split(';');
if (al != null)
{
for(int i = 0; i < al.Length; i++)
{
string temp= al[i];//"OfficeServer.aspx";
if (temp =="*.*")
{
result = true;
break;
}
if (application1.Request.Path.EndsWith(temp))
{
result = true;
break;
}
}
}
}
return result;
}
private void context_EndRequest(object sender, EventArgs e)
{
HttpApplication application1 = sender as HttpApplication;
//begin: 2005.10.15+
//如果滿足<HttpUploadModulePageJump>所設置的頁面,則不使用大文件上傳功能,直接跳出
if (IsJump(application1)) return;
//如果滿足<HttpUploadModulePageGoOn>所設置的頁面,則使用大文件上傳功能;
//如果不滿足<HttpUploadModulePageGoOn>所設置的頁面,則不使用大文件上傳功能;直接跳出
if (!IsGoOn(application1)) return;
//end
if (this.IsUploadRequest(application1.Request))
{
this.SetUploadState(application1.Context, UploadState.Complete);
this.CleanupFiles(application1.Context);
}
string text1 = (string) application1.Context.Items["__removeUploadStatus"];
if ((text1 != null) && (text1.Length > 0))
{
HttpUploadModule.RemoveFrom(application1.Application, text1);
}
}
private void context_Error(object sender, EventArgs e)
{
HttpApplication application1 = sender as HttpApplication;
//begin: 2005.10.15+
//如果滿足<HttpUploadModulePageJump>所設置的頁面,則不使用大文件上傳功能,直接跳出
if (IsJump(application1)) return;
//如果滿足<HttpUploadModulePageGoOn>所設置的頁面,則使用大文件上傳功能;
//如果不滿足<HttpUploadModulePageGoOn>所設置的頁面,則不使用大文件上傳功能;直接跳出
if (!IsGoOn(application1)) return;
//end
if (this.IsUploadRequest(application1.Request))
{
this.SetUploadState(application1.Context, UploadState.Error);
this.CleanupFiles(application1.Context);
}
}
private byte[] ExtractBoundary(string contentType, Encoding encoding)
{
int num1 = contentType.IndexOf("boundary=");
if (num1 > 0)
{
return encoding.GetBytes("--" + contentType.Substring(num1 + 9));
}
return null;
}
public static UploadedFileCollection GetUploadedFiles()
{
return HttpUploadModule.GetUploadedFiles(HttpContext.Current);
}
public static UploadedFileCollection GetUploadedFiles(HttpContext context)
{
MimeUploadHandler handler1 = (MimeUploadHandler) context.Items["_uploadHandler"];
if (handler1 != null)
{
return UploadedFileCollection.ReadOnly(handler1.UploadedFiles);
}
return null;
}
private MimeUploadHandler GetUploadHandler(HttpContext context)
{
return (MimeUploadHandler) context.Items["_uploadHandler"];
}
public static UploadStatus GetUploadStatus()
{
return HttpUploadModule.GetUploadStatus(HttpContext.Current);
}
public static UploadStatus GetUploadStatus(HttpApplicationState application, string uploadId)
{
return (UploadStatus) application["_UploadStatus_" + uploadId];
}
public static UploadStatus GetUploadStatus(HttpContext context)
{
return HttpUploadModule.GetUploadStatus(context.Request.QueryString["uploadId"]);
}
public static UploadStatus GetUploadStatus(string uploadId)
{
HttpContext context1 = HttpContext.Current;
UploadStatus status1 = HttpUploadModule.GetUploadStatus(context1.Application, uploadId);
if (((status1 != null) && (status1.State != UploadState.ReceivingData)) && status1.AutoDropState)
{
context1.Items["__removeUploadStatus"] = uploadId;
}
return status1;
}
private HttpWorkerRequest GetWorkerRequest(HttpContext context)
{
return (HttpWorkerRequest) ((IServiceProvider) HttpContext.Current).GetService(typeof(HttpWorkerRequest));
}
private void InjectTextParts(HttpWorkerRequest request, byte[] textParts)
{
BindingFlags flags1 = BindingFlags.NonPublic | BindingFlags.Instance;
Type type1 = request.GetType();
while ((type1 != null) && (type1.FullName != "System.Web.Hosting.ISAPIWorkerRequest"))
{
type1 = type1.BaseType;
}
if (type1 != null)
{
type1.GetField("_contentAvailLength", flags1).SetValue(request, textParts.Length);
type1.GetField("_contentTotalLength", flags1).SetValue(request, textParts.Length);
type1.GetField("_preloadedContent", flags1).SetValue(request, textParts);
type1.GetField("_preloadedContentRead", flags1).SetValue(request, true);
}
}
private bool IsUploadRequest(HttpRequest request)
{
return request.ContentType.ToLower().StartsWith("multipart/form-data");
}
private void RegisterIn(HttpContext context, MimeUploadHandler handler)
{
context.Items["_uploadHandler"] = handler;
context.Application["_UploadStatus_" + handler.UploadStatus.UploadId] = handler.UploadStatus;
}
public static void RemoveFrom(HttpApplicationState application, string uploadId)
{
application.Remove("_UploadStatus_" + uploadId);
}
public static void RemoveFrom(string uploadId)
{
HttpUploadModule.RemoveFrom(HttpContext.Current.Application, uploadId);
}
private void SetUploadState(HttpContext context, UploadState state)
{
MimeUploadHandler handler1 = this.GetUploadHandler(context);
if (handler1 != null)
{
handler1.UploadStatus.SetState(state);
}
}
void IHttpModule.Dispose()
{
}
void IHttpModule.Init(HttpApplication context)
{
context.BeginRequest += new EventHandler(this.context_BeginRequest);
context.Error += new EventHandler(this.context_Error);
context.EndRequest += new EventHandler(this.context_EndRequest);
}
}
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91国在线精品国内播放| 亚洲欧美精品伊人久久| 亚洲欧美激情在线视频| 亚洲成人教育av| 91精品久久久久久| 91大神在线播放精品| 亚洲国产中文字幕在线观看| 亚洲性av在线| 一区二区三区国产视频| 这里精品视频免费| 亚洲综合一区二区不卡| 欧美成人亚洲成人| 狠狠躁夜夜躁人人爽超碰91| 欧美色视频日本版| 亚洲精品第一页| 97久久久免费福利网址| 国产精品igao视频| 亚洲国产精久久久久久久| 性色av一区二区咪爱| 成人精品一区二区三区电影免费| 久久精品视频中文字幕| 日韩一区二区福利| 日韩在线视频线视频免费网站| 亚洲国产又黄又爽女人高潮的| 精品久久中文字幕久久av| 国内精品400部情侣激情| 久久久久久欧美| 日韩在线观看免费| 国产精彩精品视频| 日韩中文字幕在线观看| 国产精品视频yy9099| 成人国产精品久久久久久亚洲| 欧美超级免费视 在线| 成人a在线视频| 午夜精品久久久久久久99热浪潮| 亚洲欧美国产视频| 91在线|亚洲| 精品亚洲一区二区三区在线观看| 国产精品视频专区| 亚洲最大成人在线| 亚洲sss综合天堂久久| 国产极品jizzhd欧美| 午夜精品国产精品大乳美女| 日韩美女视频免费在线观看| 日韩在线观看免费全集电视剧网站| 久久99久久99精品中文字幕| 欧美一级黑人aaaaaaa做受| 日韩视频免费看| 日韩欧美中文字幕在线播放| 91久久精品视频| 国产女人精品视频| 丁香五六月婷婷久久激情| 日韩精品欧美国产精品忘忧草| 国产精品视频永久免费播放| 自拍偷拍亚洲一区| 亚洲xxxx妇黄裸体| 91网在线免费观看| 日韩综合中文字幕| 日韩在线视频一区| 疯狂做受xxxx欧美肥白少妇| 国产精品久久久久久久久粉嫩av| 国产免费一区二区三区香蕉精| 欧美精品videosex牲欧美| 日韩成人在线观看| 久久久成人的性感天堂| 国产精品久久久久久av| 亚洲国产日韩欧美在线动漫| 久久精品一区中文字幕| 久久久久国产一区二区三区| 最新69国产成人精品视频免费| 国产精品伦子伦免费视频| 日韩av一区在线| 国产一区在线播放| 国产精品久久久久久中文字| 777精品视频| 亚洲激情中文字幕| 亚洲一区二区三区在线免费观看| 久久精品最新地址| 亚洲电影免费观看高清完整版| 欧美黄色免费网站| 国产午夜精品理论片a级探花| 国产精品美女网站| 亚洲成色999久久网站| 人体精品一二三区| 亚洲精品电影在线| 亚洲精品一区在线观看香蕉| 国产精品99蜜臀久久不卡二区| 欧美日韩一区二区在线| 亚洲最新av在线| 国产精品亚洲综合天堂夜夜| 中文字幕最新精品| 九色精品美女在线| 久久久中精品2020中文| 欧美xxxx综合视频| 国产激情视频一区| 国产精品视频一区二区高潮| 91在线观看欧美日韩| 精品福利视频导航| 91深夜福利视频| 人人爽久久涩噜噜噜网站| 一区二区三区无码高清视频| 国产日韩精品在线播放| 精品久久久久久久久久久久久久| 日韩精品免费一线在线观看| 欧美成人中文字幕在线| 亚洲精品ady| 久久久免费在线观看| 激情久久av一区av二区av三区| 午夜精品一区二区三区在线视频| 日韩欧美在线一区| 992tv成人免费视频| 2025国产精品视频| 国产精品夫妻激情| 欧美激情欧美激情在线五月| 91在线观看免费| 亚洲成人av资源网| 久久天天躁狠狠躁夜夜爽蜜月| 91色视频在线观看| 亚洲天堂av图片| 法国裸体一区二区| 欧美二区乱c黑人| 69久久夜色精品国产69| 91亚洲精品视频| 亚洲精品一区二区网址| 日韩毛片中文字幕| 国产成人在线一区二区| 日本欧美一二三区| 亚洲精品xxx| 日韩av在线资源| 欧美日韩福利视频| 日韩福利伦理影院免费| 国产福利精品av综合导导航| 伊是香蕉大人久久| 成人黄色短视频在线观看| 久久免费成人精品视频| 5252色成人免费视频| 麻豆精品精华液| 97久久国产精品| 日本精品va在线观看| 日韩欧美极品在线观看| 操人视频在线观看欧美| 国产日韩欧美视频| 日韩在线精品一区| 国产精品成人免费电影| 在线播放国产精品| 91精品视频专区| 久久这里只有精品99| 亚洲一区二区三区毛片| 亚洲国产精品推荐| 久久影视电视剧免费网站| 91午夜在线播放| 综合国产在线观看| 日韩在线高清视频| 国产成人综合亚洲| 美女精品久久久| 久热99视频在线观看| 九九热这里只有精品免费看| 91欧美精品成人综合在线观看| 亚洲美女福利视频网站| 日本亚洲欧洲色| 日韩美女在线观看| 精品中文视频在线| 97精品久久久中文字幕免费| 欧美日韩精品国产|