asp.net 大文件上傳 之 改版了的SlickUpload.HttpUploadModule(Krystalwar
2024-07-10 12:38:59
供稿:網友
/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 name="HttpUploadModule" 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>所設置的頁面,則不使用大文件上傳功能;直接跳出