Blazor Clientで定義したテキストをAzure Blob Storageにテキストファイルとして保存する

クイック スタート:.NET 用 Azure Blob Storage クライアント ライブラリ | Microsoft Docs

Simple Steps to Upload Files to Azure Blob Storage in Blazor App (syncfusion.com)

以下のプロジェクトが存在することを前提とします。
Client: ブラウザに表示するページ
Server: DB関連やPOST/GET対応用のサーバー側の処理WEB API.
Shared: ClientとServerで使用可能なコード

Step1: Server側のappsettings.jsonを編集

Step2:Access keysを回収

Step3:NugetでAzure.Storage.Blobをインストール

Step4:Share側に送付するクラスを定義

複数情報を送付することを考えて、送付する情報をまとめてクラス化する。

    public class LabelPost
    {
        public string info1 { get; set; }
        public string info2 { get; set; }
        public string info3 { get; set; }
        public LabelPost()
        {

        }
  }

Step5:Client側でPostする内容を作成

LabelPost labelPost = new LabelPost("info1", "info2", "info3");

var responce = await Http.PostAsJsonAsync("api/UploadAzure/Upload", labelPost);

Step6:Server側でコントローラーを作成

このページ作った人。あなたはえらい。
https://www.sukerou.com/2018/10/windows-azure-blob-c.html

    [Route("api/[controller]")]
    [ApiController]
    public class UploadAzureController : ControllerBase
    {
        private readonly string azureConnectionString;
        public UploadAzureController(IConfiguration configuration)
        {
            azureConnectionString = configuration.GetConnectionString("AzureConnectionString");
        }

        [HttpPost("[action]")]
        public async Task Upload(LabelPost UploadData)
        {
            try
            {
                //ストレージアカウントを指定して、BLOB Clientを取得する
                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(azureConnectionString);
                CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

                //BLOBコンテナの取得
                CloudBlobContainer container = blobClient.GetContainerReference("yourContinerName");
                
                //BLOBコンテナが存在しない場合、作成する
                await container.CreateIfNotExistsAsync();

                //ブロックBLOBで、ファイルを作成する
                CloudBlockBlob blockBlob = container.GetBlockBlobReference("your_file_name");
                
                //ファイルに、文字列を書き込む
                var data = System.Text.Encoding.UTF8.GetBytes("line1"+System.Environment.NewLine+"line2");
                using (var mem = new MemoryStream(data))
                {
                    _ = blockBlob.UploadFromStreamAsync(mem);
                }
            }
            catch (Exception e)
            {
                Response.Clear();
                Response.StatusCode = 204;
                Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = "File failed to upload";
                Response.HttpContext.Features.Get<IHttpResponseFeature>().ReasonPhrase = e.Message;
            }

       }

MemoryStreamに記入したいテキストの情報を書き込む場合はこのサイトが参考になる。
様々な環境に対応可能なテキストの改行には「System.Environment.NewLine」が便利とのこと。
http://cyberboy6.blog.fc2.com/blog-entry-328.html

Step7:完了

このコードを実行するとファイルがBlobに保存されているはずです。

ここから先は

0字

¥ 100

この記事が気に入ったらチップで応援してみませんか?