首页后端开发ASP.NETHttpPostedFileBase文件上传实例详解

HttpPostedFileBase文件上传实例详解

时间2024-01-30 20:40:02发布访客分类ASP.NET浏览592
导读:收集整理的这篇文章主要介绍了HttpPostedFileBase文件上传实例详解,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了ASP.NET MVC HttpPosteDFileBase文件上传,具有一定的参考价值,感...
收集整理的这篇文章主要介绍了HttpPostedFileBase文件上传实例详解,觉得挺不错的,现在分享给大家,也给大家做个参考。这篇文章主要介绍了ASP.NET MVC HttpPosteDFileBase文件上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

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

文件传输信息封装

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

文件上传返回结果

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

文件上传类库

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

public class FileUtil : System.Web.UI.Page  {
        /// summary>
        /// 图片上传    /// /summary>
        /// param name="fileMessage">
    文件生成方式/param>
        /// returns>
    /returns>
    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 }
    ;
      }
    }
        /// summary>
        /// 创建指定图片文件流的缩略图    /// /summary>
        /// param name="thumbFilePath">
    缩略图文件保存路径/param>
        /// param name="fileStream">
    原始文件流/param>
        /// param name="width">
    缩略图宽/param>
        /// param name="height">
    缩略图高/param>
    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文件上传实例详解的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

详解

若转载请注明出处: HttpPostedFileBase文件上传实例详解
本文地址: https://pptw.com/jishu/593012.html
ASP.NET Core中用户登录验证实现最低配置的示例代码 Jquery怎样移除同级class

游客 回复需填写必要信息