public UploadResult Upload(UploadConfig config) { UploadResult Result = new UploadResult() { State = UploadState.Unknown }; byte[] uploadFileBytes = null; string uploadFileName = null; string fileExt = null; if (config.Base64) { uploadFileName = config.Base64Filename; fileExt = ".png"; uploadFileBytes = Convert.FromBase64String(Request[config.UploadFieldName]); } else { var file = Request.Files[0]; uploadFileName = file.FileName; fileExt = Path.GetExtension(uploadFileName).ToLower(); if (!config.AllowExtensions.Contains(fileExt)) { Result.State = UploadState.TypeNotAllow; return Result; } if (file.ContentLength > config.SizeLimit) { Result.State = UploadState.SizeLimitExceed; return Result; } uploadFileBytes = new byte[file.ContentLength]; try { file.InputStream.Read(uploadFileBytes, 0, file.ContentLength); } catch (Exception) { Result.State = UploadState.NetworkError; return Result; } } Result.OriginFileName = uploadFileName; var savePath = config.PathFormat + DateTime.Now.ToString("yyyy/MM/"); savePath += Guid.NewGuid() + fileExt; var localPath = Server.MapPath(savePath); try { if (!Directory.Exists(Path.GetDirectoryName(localPath))) { Directory.CreateDirectory(Path.GetDirectoryName(localPath)); } File.WriteAllBytes(localPath, uploadFileBytes); Result.Url = savePath; Result.State = UploadState.Success; } catch (Exception e) { Result.State = UploadState.FileAccessError; Result.ErrorMessage = e.Message; } return Result; }
/// <summary> /// 使用参数上传图片 /// </summary> /// <param name="config">配置</param> /// <param name="defaultQuality">默认图片质量(1-100)</param> /// <param name="t">图片处理方式</param> /// <param name="width">宽</param> /// <param name="height">高</param> /// <returns></returns> public UploadResult UseAttrUploadImage(UploadConfig config, int defaultQuality, CutImageType t = CutImageType.Original, int width = 0, int height = 0) { UploadResult Result = new UploadResult() { State = UploadState.Unknown }; byte[] uploadFileBytes = null; string uploadFileName = null; string fileExt = null; if (config.Base64) { uploadFileName = config.Base64Filename; fileExt = ".png"; uploadFileBytes = Convert.FromBase64String(Request[config.UploadFieldName]); } else { var file = Request.Files[0]; uploadFileName = file.FileName; fileExt = Path.GetExtension(uploadFileName).ToLower(); if (!config.AllowExtensions.Contains(fileExt)) { Result.State = UploadState.TypeNotAllow; return Result; } if (file.ContentLength > config.SizeLimit) { Result.State = UploadState.SizeLimitExceed; return Result; } try { int q = file.ContentLength/1024/1024 > 0.5 ? defaultQuality : 100; switch (t) { case CutImageType.Thumbnail: { uploadFileBytes = SunImage.GetImgThumbnail(file.InputStream, width, q, fileExt).GetBuffer(); }; break; case CutImageType.CutForCustom: { uploadFileBytes = SunImage.CutForCustom(file.InputStream, width, height, q, fileExt).GetBuffer(); }; break; case CutImageType.CutForSquare: { uploadFileBytes = SunImage.CutForSquare(file.InputStream, width, q, fileExt).GetBuffer(); }; break; default: { if (q != 100) uploadFileBytes = SunImage.ImgReduce(file.InputStream, q, fileExt).GetBuffer(); else { uploadFileBytes = new byte[file.ContentLength]; file.InputStream.Read(uploadFileBytes, 0, file.ContentLength); } }; break; } } catch (Exception) { Result.State = UploadState.NetworkError; return Result; } } Result.OriginFileName = uploadFileName; var savePath = config.PathFormat + DateTime.Now.ToString("yyyy/MM/"); savePath += Guid.NewGuid() + fileExt; var localPath = Server.MapPath(savePath); try { if (!Directory.Exists(Path.GetDirectoryName(localPath))) { Directory.CreateDirectory(Path.GetDirectoryName(localPath)); } File.WriteAllBytes(localPath, uploadFileBytes); Result.Url = savePath; Result.State = UploadState.Success; } catch (Exception e) { Result.State = UploadState.FileAccessError; Result.ErrorMessage = e.Message; } return Result; }