public IActionResult UpPhoto(int?id) { var content = new ToContent { }; var module = _db.ToModule.Where(b => b.Status == (int)EnumHelper.EmModuleStatus.启用 && b.Id == id).SingleOrDefault(); if (module == null) { return(BadRequest()); } ViewData["module"] = module; content.ModuleId = module.Id; content.MaxPic = "/images/default.svg"; return(View(content)); }
public async Task <IActionResult> UpPhoto([Bind("ModuleId,Name,Des,Status")] ToContent content) { if (ModelState.IsValid) { var module = _db.ToModule .Where(b => b.Status == (int)EmModuleStatus.启用 && b.Id == content.ModuleId) .SingleOrDefault(); if (module == null) { BadRequest(); } ViewData["module"] = module; if (string.IsNullOrWhiteSpace(content.Name)) { this.MsgBox("描述名称必填!"); return(View(content)); } //图片 var files = Request.Form.Files .Where(b => b.Name == "myPhoto" && b.ContentType.Contains("image")) .AsEnumerable(); var size = 1024 * 1024; var maxNum = 10; var maxSize = size * maxNum; var maxSingleNum = 4; var maxSingleSize = size * maxSingleNum; if (files == null) { this.MsgBox("请选择上传的图片!"); return(View(content)); } else if (files.Count() >= 11) { this.MsgBox("每次上传图片的数量不能超过10张!"); return(View(content)); } else if (files.Sum(b => b.Length) >= maxSize) { this.MsgBox($"每次上传图片的大小不能超过{maxNum}M!"); return(View(content)); } else if (files.Any(b => b.Length >= maxSingleSize)) { this.MsgBox($"单张图片的大小不能超过{maxSingleNum}M!"); return(View(content)); } //保存最小的一张 var i = 1; var file = files.OrderBy(b => b.Length).FirstOrDefault(); var fileExtend = file.FileName.Substring(file.FileName.LastIndexOf('.')); var fileNewName = $"{DateTime.Now.ToString("yyyyMMddhhmmssfff")}{i}{fileExtend}"; var path = Path.Combine(_selfSetting.UpContentPhotoPath, fileNewName); using (var stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { await file.CopyToAsync(stream); } //更新数据 content.MaxPic = $"{_selfSetting.ViewContentPhotoPath}/{fileNewName}"; content.UserId = _MyUserInfo.Id; content.CreateTime = DateTime.Now; _db.Add(content); //积分 _db.ToUserLog.Add(new ToUserLog { CodeId = (int)EmLogCode.积分, CreateTime = DateTime.Now, Des = $"【上传图片】 +{(int)EmLevelNum.上传图片}", UserId = _MyUserInfo.Id }); var dbUser = _db.ToUserInfo.SingleOrDefault(b => b.Id == _MyUserInfo.Id); dbUser.LevelNum += (int)EmLevelNum.图片; //第一张保存在文件中 _db.ToContentFiles.Add(new ToContentFiles { ContentId = content.Id, MaxPic = content.MaxPic, MinPic = content.MinPic, ZanNum = content.ZanNum }); //保存其他图片到文件表中 foreach (var item in files.Where(b => b.FileName != file.FileName).Distinct()) { i++; var fileExtend01 = item.FileName.Substring(item.FileName.LastIndexOf('.')); var fileNewName01 = $"{DateTime.Now.ToString("yyyyMMddhhmmssfff")}{i}{fileExtend01}"; var path01 = Path.Combine(_selfSetting.UpContentPhotoPath, fileNewName01); using (var stream = new FileStream(path01, FileMode.OpenOrCreate, FileAccess.ReadWrite)) { await item.CopyToAsync(stream); } _db.ToContentFiles.Add(new ToContentFiles { ContentId = content.Id, MaxPic = $"{_selfSetting.ViewContentPhotoPath}/{fileNewName01}", MinPic = null, ZanNum = 0 }); } var result = await _db.SaveChangesAsync(); if (result > 0) { return(RedirectToAction(nameof(UserCenterController.Module), "UserCenter", new { id = $"{module.Id}-1" })); } else { this.MsgBox("保存失败,请稍后重试!"); } } return(View(content)); }