设为首页 加入收藏

TOP

ASP.NET MVC HttpPostedFileBase文件上传(一)
2017-10-13 10:41:02 】 浏览:6719
Tags:ASP.NET MVC HttpPostedFileBase 文件 上传

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

文件传输信息封装

 1    /// <summary>
 2     /// 文件生成方式
 3     /// </summary>
 4     public class UpFileMessage
 5     {
 6         /// <summary>
 7         /// 文件名
 8         /// </summary>
 9         public string OriginalFileName { get; set; }
10 
11         /// <summary>
12         /// 是否保存略缩图
13         /// </summary>
14         public bool IsImage { get; set; }
15 
16         /// <summary>
17         /// 文件流
18         /// </summary>
19         public Stream FileStream { get; set; }
20 
21         /// <summary>
22         /// 生成缩略图的方式
23         /// [WH]-指定宽高
24         /// [H]-指定高,按比例缩放宽
25         /// [W]-指定宽,按比例缩放高
26         /// </summary>
27         public string Mode { get; set; }
28 
29         /// <summary>
30         /// 略缩图高度
31         /// </summary>
32         public int? ThumbHeight { get; set; }
33 
34         /// <summary>
35         /// 略缩图宽度
36         /// </summary>
37         public int? ThumbWidth { get; set; }
38 
39     }
View Code

文件上传返回结果

 1   /// <summary>
 2     /// 文件上传返回结果
 3     /// </summary>
 4     public class UpFileResultMessage
 5     {
 6         /// <summary>
 7         /// 文件保存是否成功
 8         /// </summary>
 9         public bool IsSuccess { get; set; }
10 
11         /// <summary>
12         /// 错误消息
13         /// </summary>
14         public string Message { get; set; }
15 
16         /// <summary>
17         /// 原始文件名-(无扩展名)
18         /// </summary>
19         public string FileName { get; set; }
20 
21         /// <summary>
22         /// 文件名扩展名
23         /// </summary>
24         public string FileSuffix { get; set; }
25 
26         /// <summary>
27         /// 文件名保存路径
28         /// </summary>
29         public string FilePath { get; set; }
30 
31         /// <summary>
32         /// 文件类型为图片时
33         /// 缩略图保存路径
34         /// </summary>
35         public string ThumbPath { get; set; }
36 
37         /// <summary>
38         /// 保存文件名(无扩展名)
39         /// </summary>
40         public string SaveFileName { get; set; }
41 
42         /// <summary>
43         /// 文件自增ID
44         /// </summary>
45         public int[] FileIdArray { get; set; }
46     }
View Code

文件上传类库

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

  1 public class FileUtil : System.Web.UI.Page
  2     {
  3         /// <summary>
  4         /// 图片上传
  5         /// </summary>
  6         /// <param name="fileMessage">文件生成方式</param>
  7         /// <returns></returns>
  8         public UpFileResultMessage UpLoadFile(UpFileMessage fileMessage)
  9         {
 10             try
 11             {
 12                 string now = DateTime.Today.ToString("yyyyMMdd");
 13                 string guid = Guid.NewGuid().ToString();
 14 
 15                 //获取文件扩展名
 16                 var fileSuffix = Path.GetExtension(fileMessage.OriginalFileName);
 17 
 18                 var uploadFolder = Path.Combine(System.Web.HttpContext.Current.Server.MapPath(ParmsConfig.UpFilePathUrl), now);
 19 
 20                 if (!Directory.Exists(uploadFolder))
 21                 {
 22                     Directory.CreateDirectory(uploadFolder);
 23                 }
 24 
 25                 //保存文件名
 26                 string saveFileName = guid + fileSuffix;
 27                 string filePath = Path.Combine(uploadFolder, saveFileName);
 28 
 29 
 30                 UpFileResultMessage upFileResult = new UpFileResultMessage()
 31                 {
 32                     IsSuccess = true,
 33                     FileName = Path.GetFileNameWithoutExtension(fileMessage.OriginalFileName),
 34                     FileSuffix = fileSuffix,
 35                     FilePath = string.Format(@"{0}/{1}", ParmsConfig.UpFileIPAddressUrl, now),
 36                     SaveFileName = guid
 37                 };
 38 
 39                 using (Stream sourceStream = fileMessage.FileStream)
 40                 {
 41                     using (FileStream targetStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
 42                     {
 43                         const int bufferLen = 1024 * 4;//4KB
 44                         byte[] buffer = new byte[bufferLen];
 45                         int co
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇sql创建表变量,转百分数 下一篇swaggerui在asp.net web api core..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目