public async Task <FileUploadResult> UploadAsync(Stream fileStream, PhotoForStreamUploadMetadataDto fileMetadata, string folder = null) { var fileId = CreateFileName(fileMetadata); var blockBlob = await GetOrCreateBlockBlob(fileId, folder); await blockBlob.UploadFromStreamAsync(fileStream); return(FileUploadResult.Create(fileId, blockBlob.Uri)); }
public async Task <IActionResult> UploadStreamFile() { if (!Helpers.MultipartRequestHelper.IsMultipartContentType(Request.ContentType)) { return(BadRequest($"Expected a multipart request, but got {Request.ContentType}")); } var file = await GetFileStream(HttpContext.Request.Body); if (!_fileFormatInspectorProvider.ValidateFileFormat(file.stream)) { return(BadRequest("Given file format is not supported")); } var fileMetadata = new PhotoForStreamUploadMetadataDto(); var bindingSuccessful = await TryUpdateModelAsync(fileMetadata, prefix : string.Empty, valueProvider : file.formValueProvider); if (!bindingSuccessful && !ModelState.IsValid) { return(BadRequest(ModelState)); } var user = GetUser(); var fileUploadResult = await _filesStorageProvider.UploadAsync(file.stream, fileMetadata, user.PendingUploadPhotosFolderName); var photoForUser = new PhotoForUserDto { FileId = fileUploadResult.FileId, UserId = user.Id, Url = fileUploadResult.Uri }; await _photoService.AddPhotoForUser(photoForUser); return(NoContent()); }
public string CreateFileName(PhotoForStreamUploadMetadataDto fileMetadata) { return(string.Format(_configuration.GetSection("AzureCloud:FileNameFormat").Value, fileMetadata.FileId, fileMetadata.FileExtension)); }