Upload file to Server

//Server API

public class BlobFileModel
{
    public string FileName { get; set; }
    public IFormFile File { get; set; }
    public string BlobContainerKey { get; set; }
}


[HttpPost]
[Route("api/blob/upload/file")]
public async Task<IActionResult> UploadBlobFile(BlobFileModel model)
{
    if (model.File == null || model.File.Length == 0)
    {
        return BadRequest("No file uploaded.");
    }

    var result = await _blobRepository.UploadFileStreamToBlob(model.FileName, model.File, model.BlobContainerKey);
    if (result != null)
    {
        var returnData = new { link = result };
        string jsonData = JsonConvert.SerializeObject(returnData);
        return Ok(jsonData);
    }

    return StatusCode(500, "Failed to upload file.");
}


public async Task<string> UploadFileStreamToBlob(string fileName, IFormFile file, string blobContainerKey)
{
    var containerClient = getBlobContainerClient(blobContainerKey);
    var blobClient = containerClient.GetBlobClient(fileName);

    using (var stream = file.OpenReadStream())
    {
        // upload file stream to blob
        var status = await blobClient.UploadAsync(stream, overwrite: true);
        Console.WriteLine(status);
        if (status.GetRawResponse().Status == 201)
        {
            return blobClient.Uri.AbsoluteUri;
        }
    }

    return null;
}


Startup.cs

  services.AddSingleton(x => new BlobServiceClient(_configuration.GetConnectionString("AzureBlobConnectionString")));

Last updated

Was this helpful?