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

        [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. php lock_sh共享锁 与 lock_ex排他锁

    参考网站:http://hi.baidu.com/honly1215/item/8d27a66d11689c3aac3e83fe 文件锁有两种:共享锁和排他锁,也就是读锁(LOCK_SH)和写锁(LO ...

  2. mysql if case条件更新

    在mysql中,如果你要根据某个字段的值不一样,来更新另一个字段的值,可以用如下sql语句: 如果仅仅是两个分支,if语句就可以了 update tm set page_name=if(q_aswer ...

  3. [转]MySQL Connector/C++(一)

    http://www.cnblogs.com/dvwei/archive/2013/04/18/3029464.html#undefined#undefined MySQL Connector/C++ ...

  4. IOS-细节错误

    当页面显示时一直奔溃,错误提示-[UICachedDeviceWhiteColor pointSize]: unrecognized selector sent to instance 原因是设置导航 ...

  5. vs2010 安装mvc3

    下载链接如下:MVC 3安装包:http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=d2928bc1-f48c-4e95-a0 ...

  6. Arrays和Collection之间的转换

    1.将数组转换成固定大小的列表: public static <T> List<T> asList(T... a)参数 T... a:数组元素 返回值 List<T> ...

  7. 安装lua和openresty

    #### ubuntu 16.04 64bit 安装Lua luajit 及openresty 1 安装lua ,因为luajit 支持lua5.1较好.貌似不支持5.2和5.3作为学习,我就安装5. ...

  8. GNOME编辑器--gedit 构建基本脚本

    gedit factorial.sh myprog.c 当你启动gedit外带多个文件时,它会将所有的文件都加载到不同的缓冲区并在主编辑器窗口中按标签化的窗口来显示每个文件. shell脚本的关键在于 ...

  9. mybatis的动态sql及模糊查询

    1.动态sql 使用类似于jstl表达式来实现 2.模糊查找 用一个对象来封装条件 步骤: 1)新建一个条件实体 package com.hy.mybatis.entity; public class ...

  10. ubuntu 14.04 compiz的ALT + TAB切换程序

    安装完ubuntu,发现不能使用ALT + TAB切换应用程序,翻遍所有百度结果,没有可行,都是拷这个拷那个...真实无语...FQgoogle,看的第一个就完美解决.记录下来,方便国人少走弯路. 首 ...