コード例 #1
0
        public async Task <IActionResult> UploadImages([FromForm] UploadImageDto imageDto)
        {
            if (imageDto.Image == null)
            {
                return(BadRequest("Image file should be selected"));
            }
            if (imageDto.NewBiggestDimension < 100 || imageDto.NewBiggestDimension > 10000)
            {
                return(BadRequest("Dimension size should be between 100 and 10 000"));
            }

            try
            {
                var newImageId = await _imagesService.AddImage(imageDto.Image, imageDto.ImageName, imageDto.NewBiggestDimension);

                if (imageDto.TargetRecordId != null && imageDto.TargetRecordId != Guid.Empty)
                {
                    await _recordsImagesService.AddRecordImage(imageDto.TargetRecordId.Value, newImageId);
                }

                var newImageUri = $@"{await _appSettingsService.GetHostAndPort()}/api/v1.0/images/{newImageId}";

                return(Created(newImageUri, newImageId));
            }
            catch (ArgumentException exc)
            {
                return(BadRequest(exc.Message));
            }
        }
コード例 #2
0
 public IActionResult Post(
     [FromForm] UploadImageDto dto,
     [FromServices] IUploadImageCommand command)
 {
     _executor.ExecuteCommand(command, dto);
     return(StatusCode(StatusCodes.Status201Created));
 }
コード例 #3
0
        public async Task <ApiResult> UploadByBase64(UploadImageDto input)
        {
            if (!string.IsNullOrEmpty(input.Base64Body))
            {
                try
                {
                    var    dir        = $"{DateTime.Now:yyyyMM}";
                    var    imageurl   = $"{dir}/{Guid.NewGuid()}.jpg";
                    byte[] imageBytes = Convert.FromBase64String(input.Base64Body.Replace("data:image/jpeg;base64,", ""));
                    Directory.CreateDirectory($"wwwroot/{dir}");
                    using var ms = new FileStream($"wwwroot/{imageurl}", FileMode.Create);
                    await ms.WriteAsync(imageBytes, 0, imageBytes.Length);

                    return(ApiResult.Ok(imageurl, ""));
                }
                catch (Exception)
                {
                    return(ApiResult.Err());
                }
            }
            else
            {
                throw new ApplicationServiceException("无法识别的图片");
            }
        }
コード例 #4
0
        /// <summary>
        /// Kép feltöltése az aktuális felhasználóhoz tartozó étteremhez.
        /// </summary>
        /// <param name="uploadedImage">A feltöltendő kép.</param>
        /// <returns>A kép relatív elérési útvonala.</returns>
        public async Task <string> UploadMyRestaurantImage(UploadImageDto uploadedImage)
        {
            string userId            = httpContext.GetCurrentUserId();
            int    ownerRestaurantId = await userRepository.GetMyRestaurantId(userId);

            return(await restaurantRepository.UploadRestaurantImage(ownerRestaurantId, uploadedImage));
        }
コード例 #5
0
 public IActionResult Upload([FromForm] UploadImageDto uploadImageDto)
 {
     if (!ModelState.IsValid)
         return View(uploadImageDto);
     var imageDataEntity = Mapper.Map<ImageData>(uploadImageDto);
     _dbContext.Images.Add(imageDataEntity);
     if (_dbContext.SaveChanges() > 0)
         throw new Exception("Failed to save image.");
     return RedirectToAction(nameof(Upload));
 }
コード例 #6
0
        /// <summary>
        /// Kép feltöltése a megadott azonosítóval rendelkező ételhez, ha az étel ugyanahhoz
        /// az étteremhez tartozik, mint amit az aktuális felhasználó birtokol.
        /// </summary>
        /// <param name="foodId">Az étel azonosítója.</param>
        /// <param name="uploadedImage">A képet tartalmazó osztály.</param>
        /// <returns>A kép relatív elérési útja.</returns>
        public async Task <string> UploadFoodImage(int foodId, UploadImageDto uploadedImage)
        {
            string userId            = httpContext.GetCurrentUserId();
            int    ownerRestaurantId = await userRepository.GetMyRestaurantId(userId);

            int foodRestaurantId = await foodRepository.GetFoodRestaurantId(foodId);

            if (ownerRestaurantId == foodRestaurantId)
            {
                return(await foodRepository.UploadFoodImage(foodId, uploadedImage));
            }

            throw new ProblemDetailsException(StatusCodes.Status400BadRequest,
                                              "A megadott azonosítóval rendelkező étel képének megváltoztatásához nincs jogosultságod.");
        }
コード例 #7
0
        /// <summary>
        /// Kép hozzáadása a megadott azonosítójú ételhez.
        /// Ha a megadott azonosítóval étel nem található, akkor kivételt dobunk,
        /// egyébként feltöltjük a képet és beállítjuk rá az étel relatív elérési útját.
        /// </summary>
        /// <param name="foodId">Az étel azonosítója.</param>
        /// <param name="uploadedImage">A feltöltendő kép.</param>
        /// <returns>A kép relatív elérési útja.</returns>
        public async Task <string> UploadFoodImage(int foodId, UploadImageDto uploadedImage)
        {
            var dbFood = (await dbContext.Foods
                          .SingleOrDefaultAsync(f => f.Id == foodId))
                         .CheckIfFoodNull();

            string relativeImagePath = await imageRepository.UploadImage(uploadedImage.ImageFile, "food");

            imageRepository.DeleteImage(dbFood.ImagePath);
            dbFood.ImagePath = relativeImagePath;

            await dbContext.SaveChangesAsync();

            return(relativeImagePath);
        }
コード例 #8
0
 public IActionResult OnPost([FromForm] UploadImageDto imageDto)
 {
     if (_userManager.Users.FirstOrDefault(u => u.UserName == imageDto.UserName) == null)
     {
         return(Unauthorized());
     }
     foreach (var img in imageDto.ImageFiles)
     {
         if (!_fileRepository.SaveImage(imageDto.UserName, img))
         {
             throw new Exception("Image Upload Failed");
         }
     }
     return(RedirectToPage("AuthorDashboard"));
 }
コード例 #9
0
        /// <summary>
        /// Kép hozzáadása a megadott azonosítójú étteremhez.
        /// Ha a megadott azonosítóval étterem nem található, akkor kivételt dobunk,
        /// egyébként feltöltjük a képet és beállítjuk rá az étterem relatív elérési útját.
        /// </summary>
        /// <param name="restaurantId">Az étterem azonosítója.</param>
        /// <param name="uploadedImage">A feltöltendő kép.</param>
        /// <returns>A kép relatív elérési útja.</returns>
        public async Task <string> UploadRestaurantImage(int restaurantId, UploadImageDto uploadedImage)
        {
            var dbRestaurant = (await dbContext.Restaurants
                                .SingleOrDefaultAsync(r => r.Id == restaurantId))
                               .CheckIfRestaurantNull();

            string relativeImagePath = await imageRepository.UploadImage(uploadedImage.ImageFile, "restaurant");

            imageRepository.DeleteImage(dbRestaurant.ImagePath);
            dbRestaurant.ImagePath = relativeImagePath;

            await dbContext.SaveChangesAsync();

            return(relativeImagePath);
        }
コード例 #10
0
        public async Task <UploadImageDto> GenerateSasTokenWithPermissionWrite(string fileExtension, string containerName)
        {
            var fileName              = $"{Guid.NewGuid()}.{fileExtension}";
            var permissions           = SharedAccessBlobPermissions.Write;
            var shareAccessBlobPolicy = new SharedAccessBlobPolicy()
            {
                SharedAccessStartTime  = DateTime.UtcNow.AddMinutes(StartValidTimeForSas),
                SharedAccessExpiryTime = DateTime.UtcNow.AddMinutes(ExpiredTimeForWriteFileInTempStorage),
                Permissions            = permissions
            };

            CloudBlobContainer cloudBlobContainer = GetContainer(containerName);
            string             uploadUrl          = String.Format("{0}/{1}{2}", cloudBlobContainer.Uri, fileName, cloudBlobContainer.GetSharedAccessSignature(shareAccessBlobPolicy, null));
            var uploadImageDto = new UploadImageDto
            {
                ImageName      = fileName,
                ImageUploadUrl = uploadUrl
            };

            return(uploadImageDto);
        }
コード例 #11
0
        public static UploadImageDto UploadImageToCloudinary(UploadImageDto uploadImageDto)
        {
            var file         = uploadImageDto.File;
            var uploadresult = new ImageUploadResult();

            if (file.Length > 0)
            {
                using (var stream = file.OpenReadStream())
                {
                    var uploadParams = new ImageUploadParams
                    {
                        File = new FileDescription(file.Name, stream)
                    };

                    uploadresult = _cloudinary.Upload(uploadParams);
                }
            }
            uploadImageDto.Url      = uploadresult.Uri.ToString();
            uploadImageDto.PublicId = uploadresult.PublicId;

            return(uploadImageDto);
        }
コード例 #12
0
        public void Execute(UploadImageDto request)
        {
            var guid      = Guid.NewGuid();
            var extension = Path.GetExtension(request.Image.FileName);

            var newFileName = guid + extension;

            var path = Path.Combine("wwwroot", "images", newFileName);

            using (var fileStream = new FileStream(path, FileMode.Create))
            {
                request.Image.CopyTo(fileStream);
            }

            var image = new Image
            {
                ImageName = newFileName
            };

            _context.Images.Add(image);

            _context.SaveChanges();
        }
コード例 #13
0
        public async Task <ActionResult> UploadMyRestaurantImage([FromForm] UploadImageDto uploadedImage)
        {
            string relativeImagePath = await restaurantManager.UploadMyRestaurantImage(uploadedImage);

            return(Ok(new { relativeImagePath }));
        }
コード例 #14
0
        public async Task <ActionResult> UploadFoodImage(int foodId, [FromForm] UploadImageDto uploadedImage)
        {
            string relativeImagePath = await foodManager.UploadFoodImage(foodId, uploadedImage);

            return(Ok(new { relativeImagePath }));
        }