Views

  1. @using (Html.BeginForm("Create","img",FormMethod.Post, new { enctype = "multipart/form-data" }))
  2. {
  3.  
  4. <table width="600" border="0">
  5. <tr>
  6. <td width="83">图片:</td>
  7. <td width="507">  <input type="file" name="filImgs" id="filImgs"/></td>
  8. </tr>
  9. <tr>
  10. <td>链接地址:</td>
  11. <td>  @Html.EditorFor(model => model.LinkUrl)</td>
  12. </tr>
  13. <tr>
  14. <td> <b>排序: </b></td>
  15. <td>  @Html.EditorFor(model => model.Orderby)</td>
  16. </tr>
  17. <tr>
  18. <td> </td>
  19. <td>  <input type="button" onclick="Check(1)" value="新增" /></td>
  20. </tr>
  21. </table>
  22. }

 JS

  1. function Check(str) {
  2. var img = $("#filImgs").val();
  3. var Orderby = $("#Orderby").val();
  4. var reg = new RegExp("^[0-9]*$");
  5. if(img.length<=0&&str==1)
  6. {
  7. alert('请上传图片');
  8. return false;
  9. }
  10. else if (Orderby.length <= 0) {
  11. alert("排序不能为空!");
  12. return false;
  13. }
  14. else if (Orderby.length > 0 && !reg.test(Orderby)) {
  15.  
  16. alert("请输入数字!");
  17. return false;
  18.  
  19. }
  20. else {
  21.  
  22. document.forms[0].submit();
  23. }
  24. }

  

 Conrollers

  1.  private EFHelpDB db = new EFHelpDB();
  1. public ActionResult Create()
  2. {
  3. return View();
  4. }
  5.  
  6. //
  7. // POST: /Admin/Img/Create
  8.  
  9. [HttpPost]
  10.  
  11. public ActionResult Create(tb_Img tb_img)
  12. {
  13. try
  14. {
  15. var file = Request.Files[0];
  16. var img = new upload().UpLoadImage(file, "/upfile/", "thumb_", 89, 71);
  17. if (img.IndexOf("thumb_") > -1)
  18. {
  19. tb_img.ImgUrl = img;
  20. }
  21.  
  22. db.Img.Add(tb_img);
  23. db.SaveChanges();
  24. return RedirectToAction("Index");
  25.  
  26. }
  27. catch(Exception ex)
  28. {
  29. return View("index");
  30. }
  31.  
  32. }

  

Models

  1. public class tb_Img
  2. {
  3. public int ID { get; set; }
  4. public string LinkUrl { get; set; }
  5. public string ImgUrl { get; set; }
  6. public int Orderby { get; set; }
  7. }

  上传图片类

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Web;
  4. using System.Web.UI;
  5. using System.Web.UI.WebControls;
  6. using System.IO;
  7. using System.Drawing;
  8. using System.Web.UI.HtmlControls;
  9. namespace MVC.Models
  10. {
  11. public class upload
  12. {
  13. /// <summary>
  14. /// 图片上传
  15. /// </summary>
  16. /// <param name="fulFile">上传控件</param>
  17. /// <param name="DirectionName">文件所放的父文件夹</param>
  18. /// <returns>string</returns>
  19. public upload() { }
  20.  
  21. /// <summary>
  22. /// asp.net上传图片并生成缩略图
  23. /// </summary>
  24. /// <param name="upImage">HttpPostedFileBase控件</param>
  25. /// <param name="sSavePath">保存的路径,些为相对服务器路径的下的文件夹</param>
  26. /// <param name="sThumbExtension">缩略图的thumb</param>
  27. /// <param name="intThumbWidth">生成缩略图的宽度</param>
  28. /// <param name="intThumbHeight">生成缩略图的高度</param>
  29. /// <returns>缩略图名称</returns>
  30. public string UpLoadImage(HttpPostedFileBase upImage, string sSavePath, string sThumbExtension, int intThumbWidth, int intThumbHeight)
  31. {
  32. string sThumbFile = "";
  33. string sFilename = "";
  34.  
  35. if (upImage.FileName != null)
  36. {
  37.  
  38. int nFileLen = upImage.ContentLength;
  39. if (nFileLen == 0)
  40. return "没有选择上传图片";
  41.  
  42. //获取upImage选择文件的扩展名
  43. string extendName = System.IO.Path.GetExtension(upImage.FileName).ToLower();
  44. //判断是否为图片格式
  45. if (extendName != ".jpg" && extendName != ".jpge" && extendName != ".gif" && extendName != ".bmp" && extendName != ".png")
  46. return "图片格式不正确";
  47.  
  48. byte[] myData = new Byte[nFileLen];
  49. upImage.InputStream.Read(myData, 0, nFileLen);
  50.  
  51. sFilename = System.IO.Path.GetFileName(upImage.FileName);
  52. int file_append = 0;
  53. //检查当前文件夹下是否有同名图片,有则在文件名+1
  54. while (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename)))
  55. {
  56. file_append++;
  57. sFilename = System.IO.Path.GetFileNameWithoutExtension(upImage.FileName)
  58. + file_append.ToString() + extendName;
  59. }
  60. System.IO.FileStream newFile
  61. = new System.IO.FileStream(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename),
  62. System.IO.FileMode.Create, System.IO.FileAccess.Write);
  63. newFile.Write(myData, 0, myData.Length);
  64. newFile.Close();
  65.  
  66. //以上为上传原图
  67.  
  68. try
  69. {
  70. //原图加载
  71. using (System.Drawing.Image sourceImage = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename)))
  72. {
  73. //原图宽度和高度
  74. int width = sourceImage.Width;
  75. int height = sourceImage.Height;
  76. int smallWidth;
  77. int smallHeight;
  78.  
  79. //获取第一张绘制图的大小,(比较 原图的宽/缩略图的宽 和 原图的高/缩略图的高)
  80. if (((decimal)width) / height <= ((decimal)intThumbWidth) / intThumbHeight)
  81. {
  82. smallWidth = intThumbWidth;
  83. smallHeight = intThumbWidth * height / width;
  84. }
  85. else
  86. {
  87. smallWidth = intThumbHeight * width / height;
  88. smallHeight = intThumbHeight;
  89. }
  90.  
  91. //判断缩略图在当前文件夹下是否同名称文件存在
  92. file_append = 0;
  93. sThumbFile = sThumbExtension + System.IO.Path.GetFileNameWithoutExtension(upImage.FileName) + extendName;
  94.  
  95. while (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sThumbFile)))
  96. {
  97. file_append++;
  98. sThumbFile = sThumbExtension + System.IO.Path.GetFileNameWithoutExtension(upImage.FileName) +
  99. file_append.ToString() + extendName;
  100. }
  101. //缩略图保存的绝对路径
  102. string smallImagePath = System.Web.HttpContext.Current.Server.MapPath(sSavePath) + sThumbFile;
  103.  
  104. //新建一个图板,以最小等比例压缩大小绘制原图
  105. using (System.Drawing.Image bitmap = new System.Drawing.Bitmap(smallWidth, smallHeight))
  106. {
  107. //绘制中间图
  108. using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap))
  109. {
  110. //高清,平滑
  111. g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
  112. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  113. g.Clear(Color.Black);
  114. g.DrawImage(
  115. sourceImage,
  116. new System.Drawing.Rectangle(0, 0, smallWidth, smallHeight),
  117. new System.Drawing.Rectangle(0, 0, width, height),
  118. System.Drawing.GraphicsUnit.Pixel
  119. );
  120. }
  121. //新建一个图板,以缩略图大小绘制中间图
  122. using (System.Drawing.Image bitmap1 = new System.Drawing.Bitmap(intThumbWidth, intThumbHeight))
  123. {
  124. //绘制缩略图
  125. using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap1))
  126. {
  127. //高清,平滑
  128. g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
  129. g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
  130. g.Clear(Color.Black);
  131. int lwidth = (smallWidth - intThumbWidth) / 2;
  132. int bheight = (smallHeight - intThumbHeight) / 2;
  133. g.DrawImage(bitmap, new Rectangle(0, 0, intThumbWidth, intThumbHeight), lwidth, bheight, intThumbWidth, intThumbHeight, GraphicsUnit.Pixel);
  134. g.Dispose();
  135. bitmap1.Save(smallImagePath, System.Drawing.Imaging.ImageFormat.Jpeg);
  136. }
  137. }
  138. }
  139. }
  140. }
  141. catch
  142. {
  143. //出错则删除
  144. System.IO.File.Delete(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sFilename));
  145. return "图片格式不正确";
  146. }
  147. //返回缩略图名称
  148. return sThumbFile;
  149. }
  150. return "没有选择图片";
  151. }
  152.  
  153. }
  154. }

  

MVC4 上传图片并生成缩略图的更多相关文章

  1. C#上传图片和生成缩略图以及图片预览

    因工作需要,上传图片要增加MIME类型验证和生成较小尺寸的图片用于浏览.根据网上代码加以修改做出如下效果图: 前台代码如下: <html xmlns="http://www.w3.or ...

  2. PHP.24-TP框架商城应用实例-后台1-添加商品功能、钩子函数、在线编辑器、过滤XSS、上传图片并生成缩略图

    添加商品功能 1.创建商品控制器[C] /www.test.com/shop/Admin/Controller/GoodsController.class.php <?php namespace ...

  3. C#上传图片同时生成缩略图,控制图片上传大小。

    #region 上传图片生成缩略图 /// <summary> /// 上传图片 /// </summary> /// <param name="sender& ...

  4. thinkphp上传图片,生成缩略图

    Image.php <?php /** * 实现图片上传,图片缩小, 增加水印 * 需要定义以下常量 * define('ERR_INVALID_IMAGE', 1); * define('ER ...

  5. C# webform上传图片并生成缩略图

    其实里面写的很乱,包括修改文件名什么的都没有仔细去写,主要是想记录下缩略图生成的几种方式 ,大家明白就好! void UpImgs() { if (FileUpload1.HasFile) { str ...

  6. Js上传图片并生成缩略图

    Js上传图片并显示缩略图的流程为 Js选择文件->Jquery上传图片->服务器接收图片流->存储图片->返回结果到Js端->显示缩略图 本文上传图片所用的Js库是aja ...

  7. MVC3.0 上传图片并生成缩略图

    转自:http://mikelai.blog.163.com/blog/static/18411126620118771732675/ Controller: public ActionResult ...

  8. 一例tornado框架下处理上传图片并生成缩略图的例子

    class coachpic(RequestHandler): @gen.coroutine def post(self): picurl = self.request.files[] print(& ...

  9. Asp.Net 上传图片并生成高清晰缩略图

    在asp.net中,上传图片功能或者是常用的,生成缩略图也是常用的.baidu或者google,c#的方法也是很多的,但是一用却发现缩略图不清晰啊,缩略图片太大之类的事情,下面是我在处理图片上的代码, ...

随机推荐

  1. Log4net系列二:Log4net邮件日志以及授权码

    Log4net邮件发送 上篇文章我们主要介绍Log4net生成文本格式,本篇文章主要配置邮箱发送.关于项目的引用,搭建我们就不在描述,如果不太清楚,请看上篇文章, 老规矩,我们现在配置文件中添加一个a ...

  2. AJPFX总结I/O流操作(二)

    FileWriter:该类没有特有的方法只有自己的构造函数.该类特点在于1,用于处理文本文件.2,该类中有默认的编码表,3,该类中有临时缓冲.构造函数:在写入流对象初始化时,必须要有一个存储数据的目的 ...

  3. codeforces415D. Glad to see you!(交互)

    题意 交互题. 有$k$个值域为$[1, n]$的数. 请在不超过$60$次询问内找出其中的两个数. 每次询问形式为1 x y 交互库会返回$|x - a| <= |y - b| ? " ...

  4. 成为Android高手必须掌握的8项基本要求

    [1] Android操作系统概述 1. Android系统架构. 2. Android利用设计理念. 3. Android 开源知识. 4. Android 参考网站与权威信息.[2] Androi ...

  5. iOS 根据屏幕宽度, 高度判断手机设备

    #define iPhone_5 [UIScreen mainScreen].bounds.size.width == 320.0 #define iPhone_6 [UIScreen mainScr ...

  6. JD IPO address by liuqiangdong

    Ladies and gentlemen, Good evening.I'd rather use english, not mandarin.Because during the road show ...

  7. vueCode 常用代码总结 20190116

    <template>props 传参<in-body :mbx="['首页','','']"> props 代码使用<BreadcrumbItem&g ...

  8. JOIN和UNION的区别

    join 是两张表根据条件相同的部分合并生成一个记录集. SELECT Websites.id, Websites.name, access_log.count, access_log.dateFRO ...

  9. python基础一 day2 字符串操作

    s.capitalize()  s.upper()  s.lower() s.swapcase()   s.title()  s.center(20,"#")   s.expand ...

  10. 第1节 flume:4、离线项目处理的整个架构图;5、flume的基本介绍;

    第1节 flume:4.离线项目处理的整个架构图 辅助系统工具:flume,azkaban,sqoop. 在一个完整的离线大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心 ...