HttpPostedFileBase文件上传实例详解

这篇文章主要介绍了asp.net mvc httppostedfilebase文件上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文介绍了ASP.NET MVC HttpPostedFileBase文件上传 ,分享给大家,希望对大家有帮助

HttpPostedFileBase文件上传,支持多文件一次上传,如有图片,则支持略缩图保存

文件传输信息封装

///   /// 文件生成方式  ///   public class UpFileMessage  {    ///     /// 文件名    ///     public string OriginalFileName { get; set; }    ///     /// 是否保存略缩图    ///     public bool IsImage { get; set; }    ///     /// 文件流    ///     public Stream FileStream { get; set; }    ///     /// 生成缩略图的方式    /// [WH]-指定宽高    /// [H]-指定高,按比例缩放宽    /// [W]-指定宽,按比例缩放高    ///     public string Mode { get; set; }    ///     /// 略缩图高度    ///     public int? ThumbHeight { get; set; }    ///     /// 略缩图宽度    ///     public int? ThumbWidth { get; set; }  }

登录后复制

文件上传返回结果

///   /// 文件上传返回结果  ///   public class UpFileResultMessage  {    ///     /// 文件保存是否成功    ///     public bool IsSuccess { get; set; }    ///     /// 错误消息    ///     public string Message { get; set; }    ///     /// 原始文件名-(无扩展名)    ///     public string FileName { get; set; }    ///     /// 文件名扩展名    ///     public string FileSuffix { get; set; }    ///     /// 文件名保存路径    ///     public string FilePath { get; set; }    ///     /// 文件类型为图片时    /// 缩略图保存路径    ///     public string ThumbPath { get; set; }    ///     /// 保存文件名(无扩展名)    ///     public string SaveFileName { get; set; }    ///     /// 文件自增ID    ///     public int[] FileIdArray { get; set; }  }

登录后复制

文件上传类库

需引用System.Web命名空间,并对 [System.Web.UI.Page] 进行继承,调用Server.MapPath方法

public class FileUtil : System.Web.UI.Page  {    ///     /// 图片上传    ///     /// 文件生成方式    ///     public UpFileResultMessage UpLoadFile(UpFileMessage fileMessage)    {      try      {        string now = DateTime.Today.ToString("yyyyMMdd");        string guid = Guid.NewGuid().ToString();        //获取文件扩展名        var fileSuffix = Path.GetExtension(fileMessage.OriginalFileName);        var uploadFolder = Path.Combine(System.Web.HttpContext.Current.Server.MapPath(ParmsConfig.UpFilePathUrl), now);        if (!Directory.Exists(uploadFolder))        {          Directory.CreateDirectory(uploadFolder);        }        //保存文件名        string saveFileName = guid + fileSuffix;        string filePath = Path.Combine(uploadFolder, saveFileName);        UpFileResultMessage upFileResult = new UpFileResultMessage()        {          IsSuccess = true,          FileName = Path.GetFileNameWithoutExtension(fileMessage.OriginalFileName),          FileSuffix = fileSuffix,          FilePath = string.Format(@"{0}/{1}", ParmsConfig.UpFileIPAddressUrl, now),          SaveFileName = guid        };        using (Stream sourceStream = fileMessage.FileStream)        {          using (FileStream targetStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))          {            const int bufferLen = 1024 * 4;//4KB            byte[] buffer = new byte[bufferLen];            int count = 0;            while ((count = sourceStream.Read(buffer, 0, bufferLen)) > 0)            {              targetStream.Write(buffer, 0, count);            }          }          //上传文件为图片时,需创建缩略图          if (fileMessage.IsImage)          {            var uploadThumbFolder = Path.Combine(uploadFolder, "Thumb");            if (!Directory.Exists(uploadThumbFolder))            {              Directory.CreateDirectory(uploadThumbFolder);            }            using (FileStream targetStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.None))            {              System.Drawing.Image image = System.Drawing.Image.FromStream(targetStream);              int width = image.Width;              int height = image.Height;              int thumbWidth = 0;              int thumbHeight = 0;              switch (fileMessage.Mode)              {                case "WH": //指定高宽缩放(可能变形)                   thumbWidth = fileMessage.ThumbWidth.HasValue ? fileMessage.ThumbWidth.Value : 200;                  thumbHeight = fileMessage.ThumbHeight.HasValue ? fileMessage.ThumbHeight.Value : 200;                  break;                case "W":  //指定宽,高按比例                     thumbWidth = fileMessage.ThumbWidth.HasValue ? fileMessage.ThumbWidth.Value : 200;                  thumbHeight = height * thumbWidth / width;                  break;                case "H":  //指定高,宽按比例                  thumbHeight = fileMessage.ThumbHeight.HasValue ? fileMessage.ThumbHeight.Value : 200;                  thumbWidth = width * thumbHeight / height;                  break;                default:                  thumbWidth = fileMessage.ThumbWidth.HasValue ? fileMessage.ThumbWidth.Value : 200;                  thumbHeight = height * thumbWidth / width;                  break;              }              string thumbFilePath = Path.Combine(uploadThumbFolder, saveFileName);              CreateThumbnail(thumbFilePath, targetStream, thumbWidth, thumbHeight);              upFileResult.ThumbPath = string.Format(@"{0}/{1}/Thumb", ParmsConfig.UpFileIPAddressUrl, now);            }          }        }        return upFileResult;      }      catch (Exception ex)      {        return new UpFileResultMessage() { IsSuccess = false, Message = ex.Message };      }    }    ///     /// 创建指定图片文件流的缩略图    ///     /// 缩略图文件保存路径    /// 原始文件流    /// 缩略图宽    /// 缩略图高    private void CreateThumbnail(string thumbFilePath, Stream fileStream, int width, int height)    {      using (Image image = Image.FromStream(fileStream))      {        using (Image thumbnail = image.GetThumbnailImage(width, height, null, IntPtr.Zero))        {          thumbnail.Save(thumbFilePath);        }      }    }  }

登录后复制

调用方式

var upFileMsg = new UpFileMessage()          {            IsImage = true,            OriginalFileName = platformImg[i].FileName,            FileStream = platformImg[i].InputStream,            ThumbWidth = ThumbWidth,            Mode = "W"          };         var  upFileResultMsg = new FileUtil().UpLoadFile(upFileMsg);

登录后复制

以上就是HttpPostedFileBase文件上传实例详解的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2439073.html

(0)
上一篇 2025年3月3日 11:56:50
下一篇 2025年2月25日 20:41:49

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 对MVC进行数据验证详解

    这篇文章主要为大家详细介绍了mvc数据验证的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 一、一般情况 对于使用过MVC框架的人来说,对MVC的数据验证不会陌生,比如,我有一个Model如下: public class Use…

    2025年3月3日
    200
  • asp.net页脚制作详解

    这篇文章主要为大家详细介绍了asp.net利用母版制作页脚效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文为大家分享了asp.net利用母版制作页脚的具体过程,供大家参考,具体内容如下 1.母版创建流程略过。 2.创建母版页cs…

    2025年3月3日
    200
  • C#中关于逆变和协变的详解

    这篇文章主要为大家详细介绍了c#逆变与协变的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 该文章中使用了较多的 委托delegate和Lambda表达式,如果你并不熟悉这些,请查看我的文章《委托与匿名委托》、《匿名委托与Lam…

    2025年3月3日
    200
  • 深入了解C#中的任务

    C# Task详解,需要具体代码示例 引言:在C#多线程编程中,Task是一种常用的编程模型,用于实现异步操作。Task提供了一种简单的方式来处理并发任务,可以在多个线程上并行执行异步操作,并且可以方便地处理异常和返回值。本文将详细介绍C#…

    2025年3月3日
    200
  • 深入探讨C#中的fixed关键字

    C#对于fixed详解,需要具体代码示例 在C#编程语言中,fixed关键字被用于固定一个托管对象的内存地址,以防止垃圾回收器对其进行移动。在某些情况下,我们需要直接操作内存中的数据,fixed关键字可以帮助我们实现这一需求。本文将对C#中…

    2025年3月3日
    200
  • 深入探讨C#中的递归算法

    C#的递归算法详解,需要具体代码示例 一、什么是递归算法?递归是指一个函数或方法在执行过程中调用自身的情况。递归算法是编程中常见的一种解决问题的方法。它将一个问题分解成一个或多个与原问题相似但规模更小的子问题,然后通过解决这些子问题来解决原…

    2025年3月3日
    200
  • 华为享界 S9 售 39.98 万起 首发 ADS3.0 智驾系统续航达 816km

    2024 年 8 月 6 日,鸿蒙智行享界 s9 正式发布,该车型定位为全景智慧旗舰轿车,由鸿蒙智行与北汽集团联合打造,提供 max 版和 ultra 版两个版本,售价分别为 39.98 万元和 44.98 万元,单电机和双电机两种版本可选…

    2025年3月2日
    200
  • 下单等提!杨幂晒出享界 S9 订单 余承东:欢迎挚友

    8 月 14 日,” 杨幂商务 华为 ” 的话题受到关注,有消息称杨幂与华为鸿蒙智行旗下的新车享界 s9 有合作。 1. 杨幂 果不其然,8 月 15 日上午 10 点,杨幂在社交平台晒出下定享界 S9的订单,并表示…

    2025年3月2日
    200
  • 杨幂成为享界 S9 首批车主 余承东现场亲自交车

    fenye据了解,昨日余承东现身上海亲自为享界 s9 首批车主交付新车,杨幂就在其中,还作为车主代表分享了现场用车体验。 按照此前公布的订单,杨幂选择的是享界 S9 Ultra,鎏金黑外观、琥珀棕内饰、21 英寸星辉锻铣轮毂、有零重力座椅套…

    2025年3月2日
    200
  • 专业全能轻松 Carry 全场 华为 MateBook GT 14 凭实力迎接挑战

    9 月伊始,大学生们在无限的憧憬中迎来了新学期,9 月 4 日,华为携手专业创作博主、电竞选手走进高校,与师生们齐聚 ” 超能星光派对 ” 线下体验会,共同体验华为 matebook gt 14 在专业创作以及游戏场…

    2025年3月2日 互联网
    200

发表回复

登录后才能评论