⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 上传基础.txt

📁 C# 是创新性的新式编程语言
💻 TXT
📖 第 1 页 / 共 2 页
字号:
			}
		}

		/// <summary>
		/// 已上传大小
		/// </summary>
		public long BytesRead
		{
			get
			{
				return bytesRead;
			}
		}
		
		/// <summary>
		/// 上传状态
		/// </summary>
		public UploadState State
		{
			get
			{
				return state;
			}
		}

		/// <summary>
		/// 上传开始时间
		/// </summary>
		public DateTime Start
		{
			get
			{
				return start;
			}
		}

		/// <summary>
		/// 唯一标志当前上传的UploadID
		/// </summary>
		string UploadId
		{
			get
			{
				return uploadId;
			}
		}
	}
}

3.使用页面Default.aspx
<%@ Page language="c#" Codebehind="Default.aspx.cs" AutoEventWireup="false" Inherits="Upload._Default" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
	<HEAD>
		<title>Simple Upload Sample</title>
		<style>.progressBar {
	WIDTH: 250px; HEIGHT: 18px
}
.progressInfo {
	BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 9pt; OVERFLOW: hidden; BORDER-LEFT: #000000 1px solid; WIDTH: 250px; PADDING-TOP: 1px; BORDER-BOTTOM: #000000 1px solid; POSITION: absolute; HEIGHT: 18px; TEXT-ALIGN: center
}
.progress {
	OVERFLOW: hidden; WIDTH: 0%; HEIGHT: 18px; BACKGROUND-COLOR: #5fff3f
}
</style>
		<script src="xmlLib.js"></script>
		<script>
		var r = "传输: {0}K 还未完成";
		var s = "您的文件已经上传完成";
		var t = "上传失败";
		function progressBar()
		{

			this.totalSize = 100;
			this.sizeCompleted = 0;
			this.percentDone = "0%";
			this.setSize = function(totalSize, size)
			{
				var oProgressInfo = document.getElementById("progressInfo");
				var oProgress = document.getElementById("progress");
				if (oProgress == null || oProgressInfo == null)
					return;

				if (totalSize <= 0)
					return;

				this.totalSize = totalSize;
				this.sizeCompleted = size;
				if (size < 0)
					this.sizeCompleted = 0;
				else if (size > this.totalSize)
					this.sizeCompleted = this.totalSize;

				var sizeLeft = 0;
				var progressInfoText = "";
				sizeLeft = this.totalSize - this.sizeCompleted;

				this.percentDone = Math.round(size / this.totalSize * 100) + "%";
				oProgress.style.width = this.percentDone;
				
				if (sizeLeft > 0)
					progressInfoText = r.replace("{0}", sizeLeft);
				else
					progressInfoText = s;

				oProgressInfo.innerHTML = progressInfoText;
			}
			this.UploadError = function()
			{
				var oProgressInfo = document.getElementById("progressInfo");
				var oProgress = document.getElementById("progress");
				if (oProgressInfo != null)
					oProgressInfo.innerHTML = t;
				if (oProgress != null)
					oProgress.style.width = "0";
			}
			this.UploadComplete = function()
			{
				var oProgressInfo = document.getElementById("progressInfo");
				var oProgress = document.getElementById("progress");
				if (oProgressInfo != null)
					oProgressInfo.innerHTML = s;
				if (oProgress != null)
					oProgress.style.width = "100%";
			}
		}
		var iTimerID = null;
		var xmlHttp = XmlHttpPool.pick();
		var url = "progress.aspx?UploadID=<%=Request.QueryString["UploadID"]%>"
		var pb = new progressBar();	
		function LoadProgressInfo()
		{
			try
			{
				xmlHttp.open("GET", url + "&t=" + Math.random(), true);
				xmlHttp.send(null);
				xmlHttp.onreadystatechange = function()
				{
					LoadData(xmlHttp);
				}
			}
			catch(e)
			{
				alert(e)
			}
		}

		function LoadData(xmlhttp)
		{
			if (xmlhttp.readyState == 4)
			{
				iTimerID = window.setTimeout("LoadProgressInfo()", 500); 
				try{
					eval(xmlhttp.responseText);
				}
				catch(e)
				{
					alert(e)
				}
			}
		}
		
		function ClearTimer()
		{
			if (iTimerID != null)
			{
				window.clearTimeout(iTimerID);
				iTimerID = null;
			}
		}
		
		function UploadCancel()
		{
			location.href = location.href;
		}

		</script>
	</HEAD>
	<body>
		<form method="post" target="uploadData" runat="server">
			<P><INPUT id="uploadFile" type="file" runat="server">
			</P>
			<div class="progressBar" id="progressBar">
				<div class="progressInfo" onselectstart="return false;" id="progressInfo"></div>
				<FONT face="宋体"></FONT>
				<div class="progress" id="progress"></div>
			</div>
			<P><asp:button id="btnUpload" runat="server" Text="  上传  "></asp:button>&nbsp;&nbsp;&nbsp;&nbsp;
				<INPUT id="btnUpload" onclick="UploadCancel()" type="button" value="  取消  ">
			</P>
			<iframe name="uploadData" src="about:blank"></iframe></form>
	</body>
</HTML>

4.Default.aspx.cs
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;

namespace Upload
{
	/// <summary>
	/// 上传测试页面
	/// </summary>
	public class _Default : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.Button btnUpload;
		protected System.Web.UI.HtmlControls.HtmlInputFile uploadFile;
	
		private void Page_Load(object sender, System.EventArgs e)
		{
			// 使用UploadID来唯一标识是当前的上传
			//
			if (Request.QueryString["UploadID"] == null)
				Response.Redirect("Default.aspx?UploadID=" + Guid.NewGuid().ToString());

			// 当提交的时候,开始加载进度条
			//
			btnUpload.Attributes.Add("onclick", "window.setTimeout('LoadProgressInfo()', 500)");
		}

		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.btnUpload.Click += new System.EventHandler(this.btnUpload_Click);
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion


		private void uploadButton_ServerClick(object sender, System.EventArgs e)
		{
		}

		private void btnUpload_Click(object sender, System.EventArgs e)
		{
			// 后端处理方法和普通的上传是一样的
			//
			string filename = this.uploadFile.PostedFile.FileName;
			filename = filename.Substring(filename.LastIndexOf("\\"));
			string FullPath=Server.MapPath("") + filename;
			this.uploadFile.PostedFile.SaveAs(FullPath);
			Response.Write("上传文件:" + filename);
			
			// 上传完后使用脚本通知前端进度条
			//
			Response.Write("<script>parent.pb.UploadComplete();parent.ClearTimer();</script>");
			Response.End();
		}
	}
}
5.Progress.aspx
<%@ Page language="c#" Codebehind="Progress.aspx.cs" AutoEventWireup="false" Inherits="Upload.Progress" %>
6.Progress.aspx.cs
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 Openlab.Web.Upload;
namespace Upload
{
	/// <summary>
	/// 上传进度反映页面
	/// </summary>
	public class Progress : System.Web.UI.Page
	{

		private void Page_Load(object sender, System.EventArgs e)
		{
			string uploadId = Request.QueryString["UploadID"];
			string scriptText = "";
			string scriptUploading = "pb.setSize({0}, {1});";
			string scriptClearTimer = "ClearTimer();";
			string scriptUploadComplete = "pb.UploadComplete();" + scriptClearTimer;
			string scriptUploadError = "pb.UploadError();";

			string length = "";
			string read = "";

			Openlab.Web.Upload.Progress progress = HttpUploadModule.GetProgress(uploadId, Application);
			if (progress != null)
			{
				// 如果正在接收数据,利用脚本来通知前端进度条
				//
				if (progress.State == UploadState.ReceivingData)
				{
					length = (progress.ContentLength / 1024).ToString();
					read = (progress.BytesRead / 1024).ToString();
					scriptText = string.Format(scriptUploading, length, read);
				}
				else if(progress.State == UploadState.Complete)
				{
					scriptText = scriptUploadComplete;
				}
				else
				{
					scriptText = scriptUploadError;
				}
			}
			else
			{
				//scriptText = scriptUploadError;
			}
			Response.Clear();
			Response.Write(scriptText);
			Response.End();
		}

		#region Web 窗体设计器生成的代码
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
			//
			InitializeComponent();
			base.OnInit(e);
		}
		
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{    
			this.Load += new System.EventHandler(this.Page_Load);

		}
		#endregion
	}
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -