using Bootstrap.DataAccess; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System; using System.IO; using System.Threading.Tasks; namespace Bootstrap.Admin.Controllers.Api { /// /// /// [Route("api/[controller]")] public class ProfilesController : Controller { [HttpPost] public async Task Post([FromServices]IHostingEnvironment env, IFormCollection files) { var previewUrl = string.Empty; long fileSize = 0; var userName = User.Identity.Name; var error = string.Empty; if (User.IsInRole("Administrators")) userName = "default"; if (files.Count > 0) { var uploadFile = files.Files[0]; var webSiteUrl = DictHelper.RetrieveIconFolderPath().Code; var fileName = string.Format("{0}{1}", userName, Path.GetExtension(uploadFile.FileName)); var fileUrl = string.Format("{0}{1}", webSiteUrl, fileName); var filePath = Path.Combine(env.WebRootPath, webSiteUrl.Replace("~", string.Empty).Replace("/", "\\").TrimStart('\\') + fileName); var fileFolder = Path.GetDirectoryName(filePath); fileSize = uploadFile.Length; if (!Directory.Exists(fileFolder)) Directory.CreateDirectory(fileFolder); using (var fs = new FileStream(filePath, FileMode.Create)) { await uploadFile.CopyToAsync(fs); } previewUrl = string.Format("{0}?q={1}", Url.Content(fileUrl), DateTime.Now.Ticks); UserHelper.SaveUserIconByName(userName, fileName); } return new JsonResult(new { error = string.IsNullOrEmpty(error) ? error : $"服务器端错误-{error}", initialPreview = new string[] { previewUrl }, initialPreviewConfig = new object[] { new { caption= "新头像", size= fileSize, showZoom= true } }, append = false }); } } }