图片上传 自动创建文件夹并重命名(带缩略图)
后台:

        [HttpPost]
public ActionResult WanSell_UploadPicture(ProductGalleryModels picturegm)
{ var users = Session["onlineUsers"] as List<CurrentOnlineUsers>;
string usename = users[].CUserName.ToString(); //获取用户名
string randomName = DateTime.Now.ToFileTime().ToString(); //系统当前时间为图片名称
HttpPostedFileBase file = Request.Files["fileToUpload"];//获取客户端上传的图片
string pictureName = file.FileName; //上传图片的原名
string extensionName = System.IO.Path.GetExtension(pictureName);//获取扩展名
int randomcode = BaseRandom.GetRandom(, ); //产生随机数
string newName = string.IsNullOrEmpty(pictureName.Trim()) ? "" : usename + randomcode + randomName + System.IO.Path.GetExtension(pictureName); //重命名图片
if (picturegm.ImgDescription != null && picturegm.ImgDescription != "") //附加判断图片描述是否为空
{
if (extensionName.ToLower() == "jpg" || extensionName.ToLower() == "bmp" || extensionName.ToLower() == "gif") //判断图片格式
{
string savePath = HttpContext.Server.MapPath("~/Content/Uploads/img/" + usename); //原图图片保存位置
string smalfilepath = Server.MapPath("~/Content/Uploads/smallimg/" + usename); //缩略图图片保存位置
if (!System.IO.Directory.Exists(savePath))
{
//如果路径不存在创建新文件夹
System.IO.Directory.CreateDirectory(savePath);
}
if (!System.IO.Directory.Exists(smalfilepath))
{
System.IO.Directory.CreateDirectory(smalfilepath);
}
file.SaveAs(savePath + '/' + newName); //将上传的文件保存到指定的目录。
FileFolder.MakeThumbnail(savePath + '/' + newName, smalfilepath + '/' + newName, , , "Cut");
ViewData["messageBox"] = "上传成功";
return View("~/Views/RechargeMoney/RechargeSuccess.cshtml");
}
else
{
ModelState.AddModelError("", "图片格式应为jpg/bmp/gif");
}
}
else
{
ModelState.AddModelError("", "请填写图片描述");
}
return View("~/Views/IWantSell/WanSell_UploadPicture.cshtml");
}
#endregion

Controller Code

缩略图类:
 #region 生成缩略图

         /**/

         /// <summary>

         /// 生成缩略图

         /// </summary>

         /// <param name="originalImagePath">源图路径(物理路径)</param>

         /// <param name="thumbnailPath">缩略图路径(物理路径)</param>

         /// <param name="width">缩略图宽度</param>

         /// <param name="height">缩略图高度</param>

         /// <param name="mode">生成缩略图的方式</param>    

         public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)

         {

             System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);

             int towidth = width;

             int toheight = height;

             int x = ;

             int y = ;

             int ow = originalImage.Width;

             int oh = originalImage.Height;

             switch (mode)

             {

                 case "HW"://指定高宽缩放(可能变形)                

                     break;

                 case "W"://指定宽,高按比例                    

                     toheight = originalImage.Height * width / originalImage.Width;

                     break;

                 case "H"://指定高,宽按比例

                     towidth = originalImage.Width * height / originalImage.Height;

                     break;

                 case "Cut"://指定高宽裁减(不变形)                

                     if ((double)originalImage.Width / (double)originalImage.Height > (double)towidth / (double)toheight)

                     {

                         oh = originalImage.Height;

                         ow = originalImage.Height * towidth / toheight;

                         y = ;

                         x = (originalImage.Width - ow) / ;

                     }

                     else

                     {

                         ow = originalImage.Width;

                         oh = originalImage.Width * height / towidth;

                         x = ;

                         y = (originalImage.Height - oh) / ;

                     }

                     break;

                 default:

                     break;

             }

             //新建一个bmp图片

             System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);

             //新建一个画板

             System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);

             //设置高质量插值法

             g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;

             //设置高质量,低速度呈现平滑程度

             g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;

             //清空画布并以透明背景色填充

             g.Clear(System.Drawing.Color.Transparent);

             //在指定位置并且按指定大小绘制原图片的指定部分

             g.DrawImage(originalImage, new System.Drawing.Rectangle(, , towidth, toheight),

                 new System.Drawing.Rectangle(x, y, ow, oh),

                 System.Drawing.GraphicsUnit.Pixel);

             try

             {

                 //以jpg格式保存缩略图

                 bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);

             }

             catch (System.Exception e)

             {

                 throw e;

             }

             finally

             {

                 originalImage.Dispose();

                 bitmap.Dispose();

                 g.Dispose();

             }

         }

         #endregion

缩略图 Code

asp.net MVC上传图片完整方法的更多相关文章

  1. Asp.Net MVC 上传图片到数据库

    [读书笔记]Asp.Net MVC 上传图片到数据库(会的绕行)   之前上传图片的做法都是上传到服务器上的文件夹中,再将url保存到数据库.其实在MVC中将图片上传到数据库很便捷的事情,而且不用去存 ...

  2. 【读书笔记】Asp.Net MVC 上传图片到数据库(会的绕行)

    之前上传图片的做法都是上传到服务器上的文件夹中,再将url保存到数据库.其实在MVC中将图片上传到数据库很便捷的事情,而且不用去存url了.而且这种方式支持ie6(ie6不支持jquery自动提交fo ...

  3. T4 模板 : 一种提升ASP.NET MVC开发速度方法

    最近由于需要在框架中提供一些自定义模板的功能,找到了一篇博客,可惜似乎是翻译工具直接翻的,读不通顺,就试着自己翻译下,我不会完全翻译原文的句子,可能会对原文进行小范围的我认为更合适的句子并添加些注释, ...

  4. asp.net mvc Html.BeginForm()方法

    Html.BeginForm()方法将会输出<form>标签,而且必须以using包起来,如此便可在using程序代码最后退出时,让asp.net mvc帮你补上<form>标 ...

  5. 转:自定义ASP.NET MVC Html辅助方法

    在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么 ...

  6. 【MVC】自定义ASP.NET MVC Html辅助方法

    在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么 ...

  7. [转载]自定义ASP.NET MVC Html辅助方法 TagBuilder

    在ASP.NET MVC中,Html辅助方法给我们程序员带来很多方便,其重要性也就不言自明.有时候,我们不想重复地写一些HTML代码,或者MS没有提供我们想要的那个HTML标签的Html辅助方法,那么 ...

  8. Asp.net mvc 中Action 方法的执行(二)

    [toc] 前面介绍了 Action 执行过程中的几个基本的组件,这里介绍 Action 方法的参数绑定. 数据来源 为 Action 方法提供参数绑定的原始数据来源于当前的 Http 请求,可能包含 ...

  9. Asp.net mvc 中Action 方法的执行(一)

    [toc] 在 Aps.net mvc 应用中对请求的处理最终都是转换为对某个 Controller 中的某个 Action 方法的调用,因此,要对一个请求进行处理,第一步,需要根据请求解析出对应的 ...

随机推荐

  1. Linux下搭建VPN服务器(CentOS、pptp)转

    先说我搭建过程中出现的问题吧: 按照 教程搭建好之后出现了619错误,查看日志:/var/log/messages: Nov 20 09:46:20 localhost pptpd[7498]: GR ...

  2. spring mvc fastJson 自定义类型转换(返回数据) 实现对ObjectId类型转换

    json用的alibaba fastJson ValueFilter filter = new ValueFilter() { @Override public Object process(Obje ...

  3. DotNet 资源大全中文版【转】

    转自:https://github.com/jobbole/awesome-dotnet-cn 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesom ...

  4. docker存储结构解析

    由于aufs并未并入内核,故而目前只有Ubuntu系统上能够使用aufs作为docker的存储引擎,而其他系统上使用lvm thin provisioning(overlayfs是一个和aufs类似的 ...

  5. CDN(翻译)

    http://dojotoolkit.org/documentation/tutorials/1.10/cdn/index.html 从CDN上加载dojo模块时非常有用的.从CDN上加载Dojo并同 ...

  6. Python实现支持并发、断点续传的FTP

    参考网上一个FTP程序,重写了一遍,并稍加扩展 一.要求 1. 支持多用户同时登录 2. 可以注册用户,密码使用md5加密 3. 可以登录已注册用户 4.  支持cd切换目录,ls查看目录子文件 5. ...

  7. Summernote

    Summernote是一个基于jquery的bootstrap超级简单WYSIWYG在线编辑器.Summernote非常的轻量级,大小只有30KB,支持Safari,Chrome,Firefox.Op ...

  8. Google Font字体本地化使用提高网站访问速度

    Google Web font在国内经常不稳定,速度在国内延迟也很高,而引发网页打开速度慢. 一.常见的字体格式介绍 不同的浏览器对字体格式支持是不一致的,常见的如下: 1.TureTpe(.ttf) ...

  9. Python单链表实现

    class Node(): def __init__(self,InitDate): self.Date=InitDate self.next=None def setNext(self,newnex ...

  10. Erlang 参考资料

    Erlang 官方文档 Distributed Erlang Erlang 教程中文版 %设定模块名 -module(tut17). %导出相关函数 -export([start_ping/1, st ...