温馨提示:代码在线浏览功能只能做为源码浏览参考,如果想更进一步了解该代码请下载:51aspx大文件上传并显示进度和上传速率示例及组建源码
当前文件:
LargeFileUpload/WebbUpload/WebbUploadStatusHandler.cs,打开代码结构图
LargeFileUpload/WebbUpload/WebbUploadStatusHandler.cs,打开代码结构图1using System; 2
using System.Text; 3
using System.Web; 4
using System.IO; 5
6
namespace Webb.WAVE.Controls.Upload 7
{ 8
//该源码下载自www.51aspx.com(51aspx.com) 9
10
/// <summary> 11
/// 12
/// </summary> 13
internal class WebbUploadStatusHandler : IHttpHandler 14
{ 15
/// <summary> 16
/// Implement from IHttphanders 17
/// </summary> 18
public bool IsReusable 19
{ 20
get { return true; } 21
} 22
23
public WebbUploadStatusHandler() 24
{ 25
} 26
27
/// <summary> 28
/// 29
/// </summary> 30
/// <param name="uploadGUID"></param> 31
public void InitProgress(string i_uploadGUID) 32
{ 33
HttpContext context; 34
UploadStatus m_uploadStatus = new UploadStatus(); 35
m_uploadStatus.GetUploadStatus(i_uploadGUID); 36
StringBuilder sb = WebbHelper.GetHtml("Progress.page"); 37
//While files were uploading, update the state. 38
if (m_uploadStatus.IsActive) 39
{ 40
switch (m_uploadStatus.Status) 41
{ 42
case UploadStatus.UploadState.Initializing: sb.Replace("${status}$", "Initializtion..."); break; 43
case UploadStatus.UploadState.Uploading: sb.Replace("${status}$", "Uploading..."); break; 44
case UploadStatus.UploadState.Uploaded: sb.Replace("${status}$", "Upload completed."); break; 45
case UploadStatus.UploadState.Moving: sb.Replace("${status}$", "Moving file..."); break; 46
case UploadStatus.UploadState.Completed: sb.Replace("${status}$", "Finished."); break; 47
} 48
//WebbTextTrace.TraceMsg(sb.ToString()); 49
this.ReviewStatus(m_uploadStatus, sb, i_uploadGUID); 50
} 51
else 52
{ 53
sb.Replace("${Script}$", "<script>window.opener=self;window.close();</script>"); 54
} 55
context = WebbHelper.GetContext(); 56
//Clear the cache of client browser. 57
context.Response.Expires = 0; 58
context.Response.Cache.SetCacheability(HttpCacheability.NoCache); 59
context.Response.ContentEncoding = Encoding.Default; 60
context.Response.ContentType = "text/html"; 61
context.Response.Clear(); 62
//Show page to client. 63
context.Response.Write(sb.ToString()); 64
} 65
66
/// <summary> 67
/// Update current upload status. 68
/// </summary> 69
/// <param name="uploadStatus"></param> 70
/// <param name="builder"></param> 71
/// <param name="uploadGUID"></param> 72
private void ReviewStatus(UploadStatus uploadStatus, StringBuilder builder, string uploadGUID) 73
{ 74
if (uploadStatus.Status == UploadStatus.UploadState.Uploading) 75
{ 76
builder.Replace("${FileName}$", Path.GetFileName(uploadStatus.FileName)); 77
builder.Replace("${UploadProgress}$", uploadStatus.Percent.ToString()); 78
builder.Replace("${SurplusProgress}$", Convert.ToString(100 - uploadStatus.Percent)); 79
builder.Replace("${UploadSpeed}$", (WebbHelper.GetFormatString(uploadStatus.Speed) + "/s")); 80
builder.Replace("${LeftTime}$", WebbHelper.GetFormatString(uploadStatus.LeftTime)); 81
builder.Replace("${BtnOK}$", "disabled"); 82
builder.Replace("${Refresh}$", ("<meta http-equiv=\"Refresh\" content=\"2\";URL=progress.ashx?UploadGUID="+uploadGUID+"\">")); 83
} 84
else if (uploadStatus.Status == UploadStatus.UploadState.Completed) 85
{ 86
builder.Replace("${UploadProgress}$", uploadStatus.Percent.ToString()); 87
builder.Replace("${SurplusProgress}$", Convert.ToString(100 - uploadStatus.Percent)); 88
89
builder.Replace("${FileName}$", (uploadStatus.FileCount.ToString() + "file(s) uploaded success!")); 90
builder.Replace("${UploadSpeed}$", (WebbHelper.GetFormatString(uploadStatus.Speed) + "/s")); 91
builder.Replace("${LeftTime}$", "finished, no time remain!"); 92
93
uploadStatus.Dispose(); 94
builder.Replace("${BtnOK}$", "onclick=\"javascript:window.opener=self;window.close();return false;\""); 95
builder.Replace("${Refresh}$", ""); 96
} 97
else 98
{ 99
builder.Replace("${FileName}$", "Loading..."); 100
builder.Replace("${UploadProgress}$", "0"); 101
builder.Replace("${SurplusProgress}$", "100"); 102
builder.Replace("${UploadSpeed}$", (WebbHelper.GetFormatString(uploadStatus.Speed) + "/s")); 103
builder.Replace("${LeftTime}$", "0 second(s)"); 104
builder.Replace("${BtnOK}$", "disabled"); 105
builder.Replace("${Refresh}$", ("<meta http-equiv=\"Refresh\" content=\"1\";URL=progress.ashx?UploadID=" + uploadGUID + "\">")); 106
} 107
108
if (uploadStatus.Status == UploadStatus.UploadState.Completed) 109
{ 110
builder.Replace("${BtnCancel}$", "onclick=\"javascript:window.opener=self;window.close();return false;\""); 111
} 112
else 113
{ 114
if(WebbHelper.IsAccordantBrowser()) 115
{ 116
builder.Replace("${BtnCancel}$", "onclick=\"javascript:dialogArguments.location.href=dialogArguments.location.href;window.close();\""); 117
} 118
else 119
{ 120
builder.Replace("${BtnCancel}$", "onclick=\"javascript:window.opener.opener=null;window.opener.location.href=window.opener.location.href;window.close();this.disabled=true;\""); 121
} 122
} 123
124
builder.Replace("${Script}$", ""); 125
} 126
127
/// <summary> 128
/// 129
/// </summary> 130
/// <param name="context"></param> 131
public void ProcessRequest(HttpContext context) 132
{ 133
string m_uploadID = context.Request.QueryString["UploadGUID"]; 134
string m_filePath = context.Request.FilePath; 135
m_filePath = m_filePath.Substring((m_filePath.LastIndexOf("/") + 1)).ToUpper(); 136
// bool isUnknownRequest = false; 137
if (m_filePath=="PROGRESS.ASHX") 138
{ 139
this.InitProgress(m_uploadID); 140
} 141
// The IIS can solve this problem 142
// else 143
// { 144
// isUnknownRequest = true; 145
// } 146
// 147
// if (isUnknownRequest) 148
// { 149
// throw new HttpException(500, "unknown request"); 150
// } 151
} 152
} 153
}





}