이 기사에서는 주로 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); } } } }
Calling 메서드
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 파일 업로드 예시에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!