defaultcs.aspx.cs

来自「Telerik是很大的第三方软件制造商」· CS 代码 · 共 238 行

CS
238
字号
using System;
using System.Data;
using System.Data.OleDb;
using System.IO;
using System.Web;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using Telerik.WebControls;
using Telerik.WebControls.RadUploadUtils;

namespace Telerik.UploadExamplesCSharp.PhotoGallery
{
	public class DefaultCS : Telerik.QuickStart.XhtmlPage
	{
		#region Child controls
		protected RadUpload upload1;
		protected RadUploadProgressArea progressArea1;
		protected Button btnUpload;
		protected DataGrid gridCurrentImages;
		protected Label lblNoCurrentImages;

		#endregion

		#region Private members
		private static string _connectionString = null;
		private const string CONNECTION_STRING_BASE = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};User ID=;Password=;";

		#endregion

		#region Utility members
		public const int MAX_THUMBNAIL_WIDTH = 60;
		public const int MAX_THUMBNAIL_HEIGHT = 60;

		public static string GetConnectionString(HttpRequest Request)
		{
			if (_connectionString == null)
			{
				_connectionString = string.Format(CONNECTION_STRING_BASE, Request.MapPath("./PhotoGallery.mdb"));
			}
			return _connectionString;
		}


		#endregion

		#region Event Handlers
		private void Page_Load(object sender, System.EventArgs e)
		{
			if (!Page.IsPostBack)
			{
				BindGrid();
			}
		}

		private void btnUpload_Click(object sender, System.EventArgs e)
		{
			UpdateDb(upload1.UploadedFiles);
			BindGrid();
		}

		private void gridCurrentImages_ItemDataBound(object sender, DataGridItemEventArgs e)
		{
			if (e.Item.ItemType == ListItemType.Item ||
				e.Item.ItemType == ListItemType.AlternatingItem)
			{
				DataRowView currentData = (DataRowView)e.Item.DataItem;
				HtmlAnchor haImageLink = (HtmlAnchor)e.Item.FindControl("haImageLink");
				haImageLink.HRef = string.Format("./ShowImageCS.aspx?type=full&imgid={0}", currentData["ImageID"].ToString());
				HtmlImage himgImage = (HtmlImage)e.Item.FindControl("himgImage");
				himgImage.Src = string.Format("./ShowImageCS.aspx?type=thumb&imgid={0}", currentData["ImageID"].ToString());
			}
		}

		private void gridCurrentImages_ItemCommand(object source, DataGridCommandEventArgs e)
		{
			if (e.CommandName == "Delete")
			{
				int imageID = (int)gridCurrentImages.DataKeys[e.Item.ItemIndex];
				DeleteImage(imageID);
				if (gridCurrentImages.Items.Count > gridCurrentImages.PageSize &&
					gridCurrentImages.Items.Count % gridCurrentImages.PageSize == 1)
				{
					gridCurrentImages.CurrentPageIndex = gridCurrentImages.CurrentPageIndex - 1;
				}
				BindGrid();
			}
		}

		private void gridCurrentImages_PageIndexChanged(object source, DataGridPageChangedEventArgs e)
		{
			gridCurrentImages.CurrentPageIndex = e.NewPageIndex;
			BindGrid();
		}
		#endregion

		#region Private methods
		private void BindGrid()
		{
			DataTable table = GetImageList();
			if (table.Rows.Count > 0)
			{
				lblNoCurrentImages.Visible = false;
				gridCurrentImages.Visible = true;
				gridCurrentImages.DataSource = table;
				gridCurrentImages.DataBind();
			}
			else
			{
				gridCurrentImages.Visible = false;
				lblNoCurrentImages.Visible = true;
			}
		}

		private DataTable GetImageList()
		{
			OleDbConnection conn = new OleDbConnection(GetConnectionString(Request));
			conn.Open();
			OleDbCommand command = new OleDbCommand("SELECT ImageID, [Name], [Size] FROM Images", conn);
			OleDbDataAdapter adapter = new OleDbDataAdapter(command);
			DataTable toReturn = new DataTable();
			adapter.Fill(toReturn);
			if (conn.State != ConnectionState.Closed)
			{
				conn.Close();
			}
			return toReturn;
		}

		private void UpdateDb(UploadedFileCollection uploadedFiles)
		{
			OleDbConnection conn = new OleDbConnection(GetConnectionString(Request));
			conn.Open();
			OleDbCommand command = new OleDbCommand("INSERT INTO Images ([Name], [Size], Thumbnail, [Image]) VALUES (?, ?, ?, ?)", conn);

			foreach(UploadedFile file in uploadedFiles)
			{
				string tempFileName = Path.GetTempFileName();
				file.SaveAs(tempFileName, true);
				command.Parameters.Clear();
				command.Parameters.Add("@Name", file.FileName.Substring(file.FileName.LastIndexOf("\\") + 1));
				command.Parameters.Add("@Size", file.ContentLength);
				command.Parameters.Add("@Thumbnail", GetThumbnail(tempFileName));
				command.Parameters.Add("@Image", GetImage(tempFileName));
				command.ExecuteNonQuery();
				if (File.Exists(tempFileName))
				{
					File.Delete(tempFileName);
				}
			}

			if (conn.State != ConnectionState.Closed)
			{
				conn.Close();
			}
		}

		private void DeleteImage(int imageID)
		{
			OleDbConnection conn = new OleDbConnection(GetConnectionString(Request));
			conn.Open();
			OleDbCommand command = new OleDbCommand("DELETE FROM Images WHERE ImageID = ?", conn);
			command.Parameters.Add("@ImageID", imageID);
			command.ExecuteNonQuery();

			if (conn.State != ConnectionState.Closed)
			{
				conn.Close();
			}
		}
		private byte[] GetThumbnail(string realFileName)
		{
			System.Drawing.Image originalImage = System.Drawing.Image.FromFile(realFileName);
			int[] realThumbDimensions = GetProportionalThumbnailSize(originalImage.Width, originalImage.Height);

			System.Drawing.Image.GetThumbnailImageAbort myCallback =
				new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback);

			System.Drawing.Image thumbnail = originalImage.GetThumbnailImage(
				realThumbDimensions[0],
				realThumbDimensions[1],
				myCallback,
				IntPtr.Zero);

			MemoryStream stream = new MemoryStream();
			thumbnail.Save(stream, originalImage.RawFormat);
			originalImage.Dispose();
			return stream.ToArray();
		}

		public bool ThumbnailCallback()
		{
			return false;
		}

		private int[] GetProportionalThumbnailSize(int originalWidth, int originalHeight)
		{
			int realWidth = MAX_THUMBNAIL_WIDTH;
			int realHeight = MAX_THUMBNAIL_HEIGHT;
			if (originalWidth > originalHeight)
			{
				realHeight = (int)Math.Round((decimal)(originalHeight * MAX_THUMBNAIL_WIDTH / originalWidth));
			}
			else
			{
				realWidth = (int)Math.Round((decimal)(originalWidth * MAX_THUMBNAIL_HEIGHT / originalHeight));
			}
			return new int[]{realWidth, realHeight};
		}

		private byte[] GetImage(string realFileName)
		{
			FileStream fs = File.OpenRead(realFileName);
			byte[] toReturn = new byte[fs.Length];
			fs.Read(toReturn, 0, (int)fs.Length);
			fs.Close();
			return toReturn;
		}

		#endregion

		#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			InitializeComponent();
			base.OnInit(e);
		}
		
		private void InitializeComponent()
		{    
			this.Load += new System.EventHandler(this.Page_Load);
			this.btnUpload.Click += new EventHandler(btnUpload_Click);
			this.gridCurrentImages.ItemDataBound += new DataGridItemEventHandler(gridCurrentImages_ItemDataBound);
			this.gridCurrentImages.ItemCommand += new DataGridCommandEventHandler(gridCurrentImages_ItemCommand);
			this.gridCurrentImages.PageIndexChanged +=new DataGridPageChangedEventHandler(gridCurrentImages_PageIndexChanged);
		}
		#endregion
	}
}

⌨️ 快捷键说明

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