Пример #1
0
        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));
        }
Пример #3
0
        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));
        }