当前位置:文档之家› 图片上传的功能简介

图片上传的功能简介

图片上传的功能简介 [ 日期:2004-05-11 ] [ 来自:zt ][收藏此页][打印]图片上传的功能简介及web.config设置(自动生成所略图)程序代码:功能:1。

把图片文件(JPG GIF PNG)上传,2。

保存到指定的路径(在web.config中设置路径,以文件的原有格式保存),3。

并自动生成指定宽度的(在web.config中设置宽度)4。

和指定格式的(在web.config中指定缩略图的格式,支持GIF,JPG,PNG)5。

和原图比例相同的缩略图(根据宽度和原图的宽和高计算所略图的高度)6。

可以判断是否已经存在文件7。

如果不覆盖,则给出错误8。

如果选中"覆盖原图"checkbox,则覆盖原图。

9。

可以根据要求,在webform上设置1个以上的file input和相应的checkbox10。

并在文件上传完毕后,显示原图的文件名,尺寸,字节,和11。

缩略图的文件名尺寸,以及12。

显示原图和缩略图。

13。

缩略图的文件名格式,以便与管理:大图(原图):图片分类代号_图片代表的日期_图片原有文件名.原有格式(如:28_2002-1-28_test.jpg)缩略图:图片分类代号_图片代表的日期_图片原有文件名.原有格式_thumb.指定的缩略图格式(如:28_2002-1-28_test.jpg_thumb.gif)----------------------web.config文件中的相应设置:<?xml version="1.0" encoding="utf-8" ?><configuration><system.web>......</system.web><appSettings>............//FePicSavePath 图片保存在服务器上的实际路径<add key="FePicSavePath" value="d:/myroot/myapp/content/fepics/" />//FePicWebPath 图片的网络路径,用于显示图片<add key="FePicWebPath" value="/fepics/" />//FePicThumbWidth 缩略图的宽度<add key="FePicThumbWidth" value="115" />//所略图的格式<add key="FePicThumbFormat" value="gif" /></appSettings></configuration>图片上传的数据库部分(自动生成所略图)程序代码:public int FePicDataSet(string strPicTitle, string strPicDate, string strPicName, int intPicType, st ring strPicIntro, string strThumbnail, int opID){//string strPicTitle,//string strPicDate,//string strPicName,//int intPicType,//string strPicIntro,//string strPicName,//string strThumbnail,//int opIDSqlConnection myConnection = new SqlConnection(ConfigurationSettings.AppSettings[" ConnectionString"]);SqlCommand myCommand = new SqlCommand("mag_FePicDataSet", myConnection); // Mark the Command as a SPROCmandType = CommandType.StoredProcedure;// Add Parameters to SPROCSqlParameter parameterUserId = new SqlParameter("@opID", SqlDbType.Int);parameterUserId.Value = opID;myCommand.Parameters.Add(parameterUserId);SqlParameter parameterPicTitle = new SqlParameter("@picTitle", SqlDbType.Char, 30); parameterPicTitle.Value = strPicTitle;myCommand.Parameters.Add(parameterPicTitle);SqlParameter parameterPicDate = new SqlParameter("@picDate", SqlDbType.Char, 10); parameterPicDate.Value = strPicDate;myCommand.Parameters.Add(parameterPicDate);SqlParameter parameterPicName = new SqlParameter("@picName", SqlDbType.Char, 5 0);parameterPicName.Value = strPicName;myCommand.Parameters.Add(parameterPicName);SqlParameter parameterPicType = new SqlParameter("@picType", SqlDbType.Int);parameterPicType.Value = intPicType;myCommand.Parameters.Add(parameterPicType);SqlParameter parameterPicIntro = new SqlParameter("@picIntro", SqlDbType.Char, 25 5);parameterPicIntro.Value = strPicIntro;myCommand.Parameters.Add(parameterPicIntro);SqlParameter parameterThumbnail = new SqlParameter("@thumbnail", SqlDbType.Char , 50);parameterThumbnail.Value = strThumbnail;myCommand.Parameters.Add(parameterThumbnail);SqlParameter parameterHostAddress = new SqlParameter("@opIP", SqlDbType.Char, 1 5);parameterHostAddress.Value = erHostAddress;myCommand.Parameters.Add(parameterHostAddress);//SqlParameter parameterRID = new SqlParameter("@returnID", SqlDbType.Int);//parameterReturnUserID.Value = -1;//parameterRID.Direction = ParameterDirection.Output;//myCommand.Parameters.Add(parameterRID);// Execute the command in a try/catch to catch duplicate username errorstry{// Open the connection and execute the CommandmyConnection.Open();myCommand.ExecuteNonQuery();}catch{// failed to create a new userreturn -1;}finally{// Close the Connectionif (myConnection.State == ConnectionState.Open)myConnection.Close();}return 1;}图片上传的Codebehind(自动生成所略图)程序代码:using System;using System.Collections;using ponentModel;using System.Configuration;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.Text;using cj168.util;namespace cj168.Web.Mag.Admins.FeData{/// <summary>/// Summary description for fedata./// </summary>public class feUploadPic : System.Web.UI.Page{protected System.Web.UI.WebControls.TextBox txtboxPicTitle;protected System.Web.UI.WebControls.Calendar calPicDate;protected System.Web.UI.WebControls.DropDownList ddlPicType;protected System.Web.UI.WebControls.TextBox txtboxPicIntro;protected System.Web.UI.HtmlControls.HtmlInputFile filePicName;protected System.Web.UI.WebControls.Button btnSubmit;protected bel lblPicInfo;protected System.Web.UI.WebControls.TextBox txtboxPicDate;protected System.Web.UI.WebControls.RequiredFieldValidator Requiredfieldvalidator1;protected System.Web.UI.WebControls.RegularExpressionValidator vldCatName;protected System.Web.UI.WebControls.RequiredFieldValidator Requiredfieldvalidator2;protected System.Web.UI.WebControls.CustomValidator CustomValidator1;protected System.Web.UI.WebControls.RegularExpressionValidator RegularExpressionValid ator1;protected System.Web.UI.WebControls.HyperLink hlkOriPic;protected System.Web.UI.WebControls.HyperLink hlkNewPic;protected System.Web.UI.WebControls.RegularExpressionValidator Regularexpressionvalid ator2;protected System.Web.UI.WebControls.RegularExpressionValidator Regularexpressionvalid ator3;protected System.Web.UI.WebControls.CheckBoxList checkboxlistRewrite;private void Page_Load(object sender, System.EventArgs e){// Put user code to initialize the page here//if(Page.IsPostBack)//txtboxPicDate.Text = calPicDate.SelectedDate.ToString();if(!Page.IsPostBack){Bind2DropDownListPicType();//for(int i = 0;i < Request.Files.Count; i++)//{// checkboxlistRewrite.Items.Selected = false;//}}}public void Bind2DropDownListPicType(){cj168.DataAccess.Admins admins = new cj168.DataAccess.Admins();DataSet ds = admins.FePicTypeGet();//ddlPicType.DataSource = ;DataView dv = new DataView(ds.Tables["PicType"]);DataRowView drv = dv.AddNew();//DataColumnView dcv = dv.AddNew();drv["Title"] = "请选择";drv["fePicTypeID"] = "0";drv.EndEdit();dv.Sort = "fePicTypeID";ddlPicType.DataSource = dv;ddlPicType.DataBind();}public void UploadFile(object sender, System.EventArgs e){string imgNameOnly, imgNameNoExt, imgExt;string imgThumbnail;int erroNumber = 0;System.Drawing.Image oriImg, newImg;string strFePicSavePath = ConfigurationSettings.AppSettings["FePicSavePath"].ToStri ng();string strFePicThumbFormat = ConfigurationSettings.AppSettings["FePicThumbForma t"].ToString().ToLower();int intFeThumbWidth = Int32.Parse(ConfigurationSettings.AppSettings["FePicThumb Width"]);string fileExt;string strPicTitle = txtboxPicTitle.Text;string strPicIntro = txtboxPicIntro.Text;string strPicDate = txtboxPicDate.Text;int intPicType = Int32.Parse(ddlPicType.SelectedItem.Value);string strPicType = intPicType.ToString() + "_" + DateTime.Now.Date.ToShortDateSt ring() + "_";string strFePicWebPath = ConfigurationSettings.AppSettings["FePicWebPath"];cj168.DataAccess.Admins admins = new cj168.DataAccess.Admins();//if(admins.FePicTypeSet(textboxTitle.Text,0) < 0)// lblAddPicInfo.Text = "操作失败:已经存在相同名称类型,请修改";//else// lblAddPicInfo.Text = "操作成功";StringBuilder picInfo = new StringBuilder();if(Page.IsValid){for(int i = 0;i < Request.Files.Count; i++){HttpPostedFile PostedFile = Request.Files;fileExt = (System.IO.Path.GetExtension(PostedFile.FileName)).ToString().ToLower ();//5-test.jpgimgNameOnly = strPicType + System.IO.Path.GetFileName(PostedFile.FileName); if(fileExt == ".jpg" || fileExt == ".gif" || fileExt == ".png"){if(System.IO.File.Exists(strFePicSavePath + imgNameOnly) && (checkboxlistRe write.Items.Selected == false)){erroNumber = erroNumber + 1;picInfo.Append("<b>错误:</b>文件("+ (i+1) +") " + imgNameOnly + " 已经存在,请修改文件名<br>" );}}else{erroNumber = erroNumber + 1;if(fileExt == "")picInfo.Append("<b>错误:</b>请选择文件<br>" );elsepicInfo.Append("<b>错误:</b>文件("+ (i+1) +") " + imgNameOnly + " 扩展名 " + fileExt + " 不被许可<br>" );}}if(erroNumber > 0){picInfo.Append("<font color=red>全部操作均未完成,请修改错误,再进行操作</font><br>");hlkOriPic.ImageUrl = "";hlkOriPic.ToolTip = "";hlkNewPic.ImageUrl = "";hlkNewPic.ToolTip = "";}else{for(int i = 0;i < Request.Files.Count; i++){HttpPostedFile PostedFile = Request.Files;imgNameOnly = strPicType + System.IO.Path.GetFileName(PostedFile.FileNam e);imgNameNoExt = System.IO.Path.GetFileNameWithoutExtension(PostedFile.File Name);imgExt = System.IO.Path.GetExtension(PostedFile.FileName).ToString().ToLow er();oriImg = System.Drawing.Image.FromStream(PostedFile.InputStream);newImg = oriImg.GetThumbnailImage(intFeThumbWidth, intFeThumbWidth * o riImg.Height/oriImg.Width,null,new System.IntPtr(0));switch(imgExt){//case ".jpeg":case ".jpg":oriImg.Save(strFePicSavePath + imgNameOnly , System.Drawing.Imagin g.ImageFormat.Jpeg);break;case ".gif":oriImg.Save(strFePicSavePath + imgNameOnly , System.Drawing.Imagin g.ImageFormat.Gif);break;case ".png":oriImg.Save(strFePicSavePath + imgNameOnly , System.Drawing.Imagin g.ImageFormat.Png);break;}//oriImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"] + imgName NoExt + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg);switch(strFePicThumbFormat){//jpeg format can get the smallest file size, and the png is the largest size //case "jpeg":case "jpg":newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);imgThumbnail = imgNameOnly + "_thumb.jpg";break;case "gif":newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.gif",System. Drawing.Imaging.ImageFormat.Gif);imgThumbnail = imgNameOnly + "_thumb.gif";break;case "png":newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.png",System .Drawing.Imaging.ImageFormat.Png);imgThumbnail = imgNameOnly + "_thumb.png";break;default:newImg.Save(strFePicSavePath + imgNameOnly + "_thumb.jpg",System. Drawing.Imaging.ImageFormat.Jpeg);imgThumbnail = imgNameOnly + "_thumb.jpg";break;}//switchpicInfo.Append("<b>文件名:</b>" + imgNameOnly + " ( " + oriImg.Width + " x " + oriImg.Height + " ) " + PostedFile.Cont entLength/1024 + "KB<br>");picInfo.Append("<b>缩略图名:</b>" + imgThumbnail + " ( " + newImg.Width + " x " + newImg.Height + " )<br><br>");hlkOriPic.ImageUrl = strFePicWebPath + imgNameOnly;hlkOriPic.ToolTip = "◆原图◆n文件名:" + imgNameOnly + "n尺寸:" + oriImg.Width + " x " + oriImg.Height + "n字节:" + PostedFile.ContentLength/1024 + "KB"; hlkNewPic.ImageUrl = strFePicWebPath + imgThumbnail;hlkNewPic.ToolTip = "◆缩略图◆n文件名:" + imgThumbnail + "n尺寸:" + newImg.Width + " x " + newImg.Height;oriImg.Dispose();newImg.Dispose();picInfo.Append("<font color=red>图片上传成功</font><br>");if(admins.FePicDataSet(strPicTitle, strPicDate, imgNameOnly, intPicType, strPicI ntro, imgThumbnail,0) < 0)picInfo.Append("<font color=red>保存信息到数据库失败</font><br>");elsepicInfo.Append("<font color=red>保存信息到数据库成功</font><br>");}//forpicInfo.Append("<font color=red>所有操作成功</font><br>");}// if erronumber = 0}else{picInfo.Append("<font color=red>有错误,请检查。

相关主题