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

        [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. 10天学会phpWeChat——第二天:hello world!我的第一个功能模块

    今天我们开始进入<10天学会phpWeChat>系列教程的第二天:创建我的第一个hello world! 功能模块. 1.登录后台,进入 系统设置--自定义模块,如图: 自定义模块参数说明 ...

  2. ivy 配置 maven代理

    Ivy 是一个依赖管理工具,直观感受是其跟maven 的作用差不多:但这两个其实是不同的工具: maven 是面向整个项目的工程管理及构建工具:ivy 仅作为依赖管理工具,与ant 高度集成. 需要了 ...

  3. 从css谈模块化

    模块化是现今我们随处都可以听到的一个名词,什么是模块化?为什么我们需要模块化?这是本系列文章我们要弄明白的一个问题.我们也借这部分内容,顺带回顾一下前端的发展历程. 说实话,模块化这个主题有点大,我一 ...

  4. openssl 升级

    openssl version -a rpm -q --changelog  openssl | grep CVE bash -version #!/bin/bash if [[ $EUID -ne ...

  5. php自学提升进阶路线

    为了自己对php的系统全面深入的掌握,我通过个人经验,以及搜索网上高手经验,汇总了一份php自我学习路线规划,包括实战演练.学习建议.高手进阶.常见问题和测试总结五块.算是一个系统的学习计划和目标吧. ...

  6. jvm的代码缓存耗尽导致性能下降

    在没遇到这个问题之前,我对JVM的解释模式与编译模式的代码性能相差有多大,是没有感觉的,只是觉得编译模式会比解释模式性能好那么一点点吧. 但是经历过这次以后,让我对JVM的即时编译产生了兴趣.先来看看 ...

  7. MySql 存储过程及调用方法

    存储过程实例: DELIMITER $$drop procedure if exists ff $$CREATE /*[DEFINER = { user | CURRENT_USER }]*/ PRO ...

  8. js点击后将文字复制到剪贴板,将图片复制到剪贴板

    复制文字: <table width="99%" border="0" cellpadding="0" cellspacing=&qu ...

  9. makefile小例子

    makefile的知识点应该很多,看网上的很多教程就能看出来,长的可以写一本书.记录一下自己用的一个简单的makefile, 方便以后查找. 先看一下程序的目录结构: [root@localhost ...

  10. Oracle 存储过程 split 代码实现

    实现 字符串分割, 算法 如下: 算法 1: DECLARE remove_column myvarray_list; x ); sub ); i NUMBER; j NUMBER; c NUMBER ...