最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

ASP.NET MVC HttpPostedFileBase文件上传的实例代码

来源:动视网 责编:小采 时间:2020-11-27 22:35:29
文档

ASP.NET MVC HttpPostedFileBase文件上传的实例代码

ASP.NET MVC HttpPostedFileBase文件上传的实例代码:本文介绍了ASP.NET MVC HttpPostedFileBase文件上传 ,分享给大家,希望对大家有帮助 HttpPostedFileBase文件上传,支持多文件一次上传,如有图片,则支持略缩图保存 文件传输信息封装 /// <summary> /// 文件生成方式 /// &
推荐度:
导读ASP.NET MVC HttpPostedFileBase文件上传的实例代码:本文介绍了ASP.NET MVC HttpPostedFileBase文件上传 ,分享给大家,希望对大家有帮助 HttpPostedFileBase文件上传,支持多文件一次上传,如有图片,则支持略缩图保存 文件传输信息封装 /// <summary> /// 文件生成方式 /// &


本文介绍了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);

代码地址:文件上传类库包.zip 

文档

ASP.NET MVC HttpPostedFileBase文件上传的实例代码

ASP.NET MVC HttpPostedFileBase文件上传的实例代码:本文介绍了ASP.NET MVC HttpPostedFileBase文件上传 ,分享给大家,希望对大家有帮助 HttpPostedFileBase文件上传,支持多文件一次上传,如有图片,则支持略缩图保存 文件传输信息封装 /// <summary> /// 文件生成方式 /// &
推荐度:
标签: 例子 实例 net
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top