BlazorでAzure Blobにあるテキストを読み込む

Blob上にあるテキストファイルを読み込む
一部コードをこちらから拝借。Getのパラメータが3つあることには意味がない。
https://note.com/y_sakamoto/n/n6f7cef56ed5b
Server側コード

    [Route("api/[controller]")]
    [ApiController]
    public class TestController : Controller
    {
        private readonly string azureConnectionString;

        public ImageLabelController(DataContext context, IConfiguration configuration)
        {
            azureConnectionString = configuration.GetConnectionString("AzureConnectionString");
        }

    [HttpGet("{id}/{id2}/{id3}")]
        public async Task<ActionResult<List<string>>> Get(string id, string id2, string id3)
        {
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(azureConnectionString);
            CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("ContainerName");
            CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference("Filename.txt");

            bool _is_exist = cloudBlockBlob.ExistsAsync().Result;
            List<string> str_list = new List<string>();
            
            if (_is_exist)
            {
                var reading = cloudBlockBlob.OpenReadAsync().Result;
                using (var ms = new StreamReader(reading))
                {
                    string line;
                    while ((line = ms.ReadLine())!=null)
                    {
                        str_list.Add(line);
                    }                 
                }
                return Ok(str_list);
            }
            else
            {
                return BadRequest(str_list);
            }
            
        }

Client側

 var stringlist = await Http.GetFromJsonAsync<string[]>("api/Test/r/r/r");

どういう形式で返すかは自由であるが、ここではString型に直してClient側に返す方式を記載した。

ここから先は

0字

¥ 100

この記事が気に入ったらサポートをしてみませんか?