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

2025-05-29 0 67

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

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

文件传输信息封装

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39
/// <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; }

}

文件上传返回结果

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46
/// <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方法

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121
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);

}

}

}

}

调用方式

?

1

2

3

4

5

6

7

8

9
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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

原文链接:http://www.cnblogs.com/shanshanlaichi/p/7212301.html?utm_source=tuicool&utm_medium=referral

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 ASP.NET MVC HttpPostedFileBase文件上传的实例代码 https://www.kuaiidc.com/98867.html

相关文章

发表评论
暂无评论