源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c#多图片上传并生成缩略图的实例代码

  • 时间:2021-01-22 03:35 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c#多图片上传并生成缩略图的实例代码
前台代码:
[u]复制代码[/u] 代码如下:
 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="upload.aspx.cs" Inherits="upload" %>  <!DOCTYPE html>  <html xmlns="http://www.w3.org/1999/xhtml">  <head runat="server">      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />      <title></title>      <style type="text/css">          li          {              list-style: none;              padding-top: 10px;          }      </style>      <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>      <script type="text/javascript">          function ValidImage(id, msg) {              $(id).parent().append("<span>" + msg + "</span>");              return false;          }      </script>  </head>  <body>      <form id="form1" runat="server" enctype="multipart/form-data" method="post">          <div>                        <ul>                  <li>                      <input type="file" id="upload1" name="upload" />                  </li>                  <li>                      <input type="file" id="upload2" name="upload" />                  </li>                  <li>                      <input type="file" id="upload3" name="upload" />                  </li>                  <li>                      <input type="file" id="upload4" name="upload" /></li>                  <li>                      <input type="file" id="upload5" name="upload" />                  </li>                  <li>                      <input type="submit" id="btnPostFile" runat="server" onserverclick="btnPostFile_ServerClick" value="开始上传" />                  </li>              </ul>          </div>      </form>  </body>  </html>
前台就是几个控件和一个ValidImage方法。 后台代码:
[u]复制代码[/u] 代码如下:
  protected void btnPostFile_ServerClick(object sender, EventArgs e)      {          string filePath = Server.MapPath("/uploadImg");          const int size = 5242880;          if (!Directory.Exists(filePath))          {              Directory.CreateDirectory(filePath);          }          if (Request.Files.Count > 0)          {              for (int i = 0; i < Request.Files.Count; i++)              {                  HttpPostedFile postFile = Request.Files[i];                  string uploadFileID = string.Format("#upload{0}", i + 1);  //当前的上传控件ID,因为jquery要调用就加了#                  string msg = null;                 //提示信息                  if (postFile.FileName.Trim().Length <= 0)                  {                      continue;                  }                  if (postFile.ContentLength > size)                  {                      msg = "文件太大";                      Page.ClientScript.RegisterStartupScript(GetType(), "", "ValidImage(" + uploadFileID + "," + msg + ")", true);//将提示信息发送到客户端                      continue;                  }                  string savePath = Path.Combine(filePath, postFile.FileName);        //图片的保存地址                  if (!File.Exists(savePath))                  {                      postFile.SaveAs(Path.Combine(filePath, postFile.FileName));     //如果文件不存在就保存                  }                  else                  {                      msg = "文件" + postFile.FileName + "已经存在";                      Page.ClientScript.RegisterStartupScript(GetType(), "", "ValidImage(" + uploadFileID + "," + msg + ")", true);//将提示信息发送到客户端                      continue;                  }                  if (IsImg(savePath))            //通过IsImg方法验证文件是否是图片,或者格式是否正确                  {                      SmallImg(postFile.InputStream, postFile.FileName);                  }                  else                  {                      msg = "只能上传JGP、PNG类型的图片,请检查文件格式是否正确";                      Page.ClientScript.RegisterStartupScript(GetType(), "", "ValidImage(" + uploadFileID + "," + msg + ")", true);//将提示信息发送到客户端                      File.Delete(savePath);  //如果不是图片就删除                  }              }          }      }
[u]复制代码[/u] 代码如下:
  #region 验证上传文件的格式      /// <summary>      /// 验证上传文件是否是图片      /// </summary>      /// <param name="FilePath">文件的保存路径</param>      /// <returns></returns>      private bool IsImg(string FilePath)      {          using (FileStream fs = new FileStream(FilePath, FileMode.Open, FileAccess.Read))          {              bool result = false;              BinaryReader br = new BinaryReader(fs, System.Text.Encoding.UTF8);              string strImg = "";              byte buffer;              try              {                  buffer = br.ReadByte();                  strImg = buffer.ToString();                  buffer = br.ReadByte();                  strImg += buffer.ToString();              }              catch              {                  fs.Close();                  br.Close();              }              if (strImg == "255216" || strImg == "13780")//说明255216是jpg;7173是gif;6677是BMP,13780是PNG;7790是exe,8297是rar              {                  result = true;              }              return result;          }      }      #endregion
[u]复制代码[/u] 代码如下:
   #region 将图片生成缩略图      /// <summary>      /// 生成缩略图      /// </summary>      private void SmallImg(Stream oStream, string FileName)      {          using (System.Drawing.Image img = System.Drawing.Image.FromStream(oStream))          {              int newWidth = 100;              int newHeight = 80;              int oldWidth = img.Width;              int oldHeight = img.Height;              if (oldWidth > oldHeight)              {                  newHeight = (int)Math.Floor((double)oldHeight * (double)newWidth / (double)oldWidth);              }              else              {                  newWidth = (int)Math.Floor((double)oldWidth * (double)newHeight / (double)oldHeight);              }              using (Bitmap bmp = new Bitmap(newWidth, newHeight))              {                  using (Graphics g = Graphics.FromImage(bmp))                  {                      g.Clear(Color.Transparent);                      g.InterpolationMode = InterpolationMode.High;                      g.CompositingQuality = CompositingQuality.HighQuality;                      g.SmoothingMode = SmoothingMode.HighQuality;                      g.DrawImage(img, new Rectangle(0, 0, newWidth, newHeight), new Rectangle(0, 0, oldWidth, oldHeight), GraphicsUnit.Pixel);                      string newFileName = Path.GetFileNameWithoutExtension(FileName) + "_small" + Path.GetExtension(FileName);   //缩略图名称                      string filePath = Server.MapPath("/uploadImg/") + newFileName;                      bmp.Save(filePath);                  }              }          }      }      #endregion
代码有很多需要改进的地方,希望大家多多指点。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部