华域联盟 .Net c#多图片上传并生成缩略图的实例代码

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

前台代码:

复制代码 代码如下:

 <%@ 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方法。

后台代码:

复制代码 代码如下:

  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);  //如果不是图片就删除

                 }

             }

         }

     }

复制代码 代码如下:

  #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

复制代码 代码如下:

   #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

代码有很多需要改进的地方,希望大家多多指点。

您可能感兴趣的文章:

  • C#(.net)水印图片的生成完整实例
  • asp.net(C#)使用QRCode生成图片中心加Logo或图像的二维码实例
  • c# .net 生成图片验证码的代码
  • C#动态生成PictureBox并指定图片的方法
  • C#生成条形码图片的简单方法
  • c#生成图片缩略图的类(2种实现思路)
  • C#实现的pdf生成图片文字水印类实例
  • c#生成自定义图片方法代码实例
  • C#实现在底图上动态生成文字和图片

本文由 华域联盟 原创撰写:华域联盟 » c#多图片上传并生成缩略图的实例代码

转载请保留出处和原文链接:https://www.cnhackhy.com/49045.htm

本文来自网络,不代表华域联盟立场,转载请注明出处。

作者: sterben

发表回复

联系我们

联系我们

2551209778

在线咨询: QQ交谈

邮箱: [email protected]

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部