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));
        }
示例#2
0
        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));
        }