Exemplo n.º 1
0
        public async Task <FileUploadResponse> UploadImagesAsync(IEnumerable <VehicleImage> vehicleImages)
        {
            var uploadImagesRequest = new UploadImagesRequest(vehicleImages.Select(vi => vi.ImageAlbumPath));

            return(await CrossFileUploader.Current.UploadFileAsync(uploadImagesRequest.Url, uploadImagesRequest.FilePathItems.ToArray(), vehicleImages.FirstOrDefault()?.Tag, uploadImagesRequest.Headers));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> UploadImages([FromForm] UploadImagesRequest request)
        {
            var result = new FilesUploadResponse {
                UploadedFiles = new List <MessageAttachment>()
            };

            if (!request.images.Any())
            {
                return(BadRequest(new ResponseApiModel <FilesUploadResponse>
                {
                    ErrorMessage = "No files were provided.",
                    IsSuccessfull = false,
                    Response = null
                }));
            }

            foreach (var image in request.images)
            {
                if (image.Length > 1024 * 1024 * MaxImageLengthMB)
                {
                    return(BadRequest(new ResponseApiModel <FilesUploadResponse>
                    {
                        ErrorMessage = $"Some of the files were larger than {MaxImageLengthMB} Mb",
                        IsSuccessfull = false
                    }));
                }
            }

            var error      = string.Empty;
            var thisUserId = ClaimsExtractor.GetUserIdClaim(User.Claims);

            var errorLock  = new object();
            var resultLock = new object();

            Parallel.ForEach(request.images, file =>
            {
                try
                {
                    var uploadedFile = filesService
                                       .SaveMessagePicture(file, file.FileName, request.ChatId, thisUserId).GetAwaiter()
                                       .GetResult();

                    lock (resultLock)
                    {
                        result.UploadedFiles.Add(uploadedFile);
                    }
                }
                catch (Exception ex)
                {
                    lock (errorLock)
                    {
                        error = "Some of the files failed to upload. Exception type for last file was: " +
                                ex.GetType();
                    }
                }
            });

            return(Ok(new ResponseApiModel <FilesUploadResponse>
            {
                ErrorMessage = error == string.Empty ? null : error,
                IsSuccessfull = error == string.Empty,
                Response = result
            }));
        }
Exemplo n.º 3
0
 public async Task <IActionResult> UploadImages([FromBody] UploadImagesRequest request)
 {
     throw new NotImplementedException {
     };
 }