public async Task <ActionResult <ProjectMedia> > PostProjectMedia([FromForm] ProjectMediaModel projectMediaModel) { var requestForm = Request.Form; var file = requestForm.Files[0]; var result = new Result <string>(); var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); var newFileName = $@"{Int32.Parse(projectMediaModel.ProjectId)}-{fileName}"; try { // add image bool isStoreSuccess = await StoreImage("ProductImages", newFileName, file); if (!isStoreSuccess) { throw new Exception("Store image locally failed."); } //add image name to db ProjectMedia projectMedia = new ProjectMedia { ProjectId = Int32.Parse(projectMediaModel.ProjectId), Url = $@"Images/GalleryImages/{newFileName}" }; await _context.ProjectMedia.AddAsync(projectMedia); await _context.SaveChangesAsync(); result.Data = $@"{fileName} successfully uploaded"; } catch (Exception e) { result.ErrorMessage = e.Message; return(BadRequest(result)); } return(Ok(result)); }
//[Authorize] public async Task <ActionResult <ProjectMedia> > PostProjectMedia([FromForm] ProjectMediaModel projectMediaModel) { var requestForm = Request.Form; var file = requestForm.Files[0]; var result = new Result <string>(); //var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"'); //var newFileName = $@"{Int32.Parse(projectMediaModel.ProjectId)}-{fileName}"; string fileNameForStorage = Guid.NewGuid().ToString(); try { //add image name to db ProjectMedia projectMedia = new ProjectMedia { ProjectId = Int32.Parse(projectMediaModel.ProjectId), Url = $@"Images/GalleryImages/{fileNameForStorage}" }; await _context.ProjectMedia.AddAsync(projectMedia); await _context.SaveChangesAsync(); var bucketName = "luxe_media"; GoogleCredential credential = null; using (var jsonStream = new FileStream("xxxxx.json", FileMode.Open, FileAccess.Read, FileShare.Read)) { credential = GoogleCredential.FromStream(jsonStream); } var storageClient = StorageClient.Create(credential); using (var memoryStream = new MemoryStream()) { await file.CopyToAsync(memoryStream); await storageClient.UploadObjectAsync(bucketName, $@"wwwroot/Images/GalleryImages/{fileNameForStorage}", "image/jpeg", memoryStream); } result.Data = $@"{fileNameForStorage} successfully uploaded"; } catch (Exception e) { result.ErrorMessage = e.Message; return(BadRequest(result)); } return(Ok(result)); }
public async Task <IActionResult> PutProjectMedia(int id, ProjectMediaModel projectMediaModel) { var result = new Result <string>(); Type projectMediaType = typeof(ProjectMedia); var updateProjectMedia = await _context.ProductMedia.Where(x => x.Id == id).FirstOrDefaultAsync(); if (updateProjectMedia == null) { return(NotFound(DataNotFound(result))); } UpdateTable(projectMediaModel, projectMediaType, updateProjectMedia); try { await _context.SaveChangesAsync(); } catch (Exception e) { result.ErrorMessage = e.Message; result.IsSuccess = false; return(BadRequest(result)); } return(Ok(result)); }