web-dev-qa-db-ja.com

REST APIを使用してWebアプリからAzureファイルストレージにファイルをアップロードする

私はAzure、Rest API、C#に詳しくありませんが、とにかくこれを行う必要があり、ガイドとなる適切なドキュメントが見つかりませんでした...

このWebアプリがあり、現在はWebフォームであり、MVCではありません...これは、Azureプラットフォームでホストされます。

このWebアプリの主な機能は、ユーザーファイルをAzure File Storageにアップロードすることです。

ファイルは、単純なテキストまたはデータストリームまたはデータ入力ではなく、pdfまたはmp3などである可能性があります。

Azureを使用するように言われましたREST APIでファイルをアップロードしますが、私はそれに慣れておらず、適切なサンプルやチュートリアル、ビデオをオンラインで見つけることができません。Microsoftからの現在のドキュメントは?????? 私に。

現在、ローカルフォルダーにアップロードするだけなので、コードは次のようになります。FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload\\" + FileUpload1.FileName)); in C#;

どこから始めればいいですか?私はすでに持っているDefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyyのようなStorageConnectionStringを追加することになっていると思います。

そして、私は「post」のようなコードをc#で書くべきですか?この部分は本当にわかりません。ばかげた質問ですか?

私は本当に初心者であり、どんな助けにも感謝します。ありがとう(T。T)

13
AprilX

Azureは、アップロードに使用でき、Azure File Storageで他の「ファイル管理」タイプのアクティビティを実行できるnugetライブラリを提供します。

ライブラリが呼び出されます:WindowsAzure.Storage

これを実現するための基本は次のとおりです。

//Connect to Azure
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);

// Create a reference to the file client.
CloudFileClient fileClient = storageAccount.CreateCloudFileClient();      

// Create a reference to the Azure path
CloudFileDirectory cloudFileDirectory = GetCloudFileShare().GetRootDirectoryReference().GetDirectoryReference(path);

//Create a reference to the filename that you will be uploading
CloudFile cloudFile = cloudSubDirectory.GetFileReference(fileName);

//Open a stream from a local file.
Stream fileStream= File.OpenRead(localfile);

//Upload the file to Azure.
await cloudFile.UploadFromStreamAsync(fileStream);
fileStream.Dispose();

その他のリンクと情報はここにあります(サンプルについてはかなり下にスクロールしてください): https://Azure.Microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-files/

23
Gary Holland

このコードは、上記のGary Hollandからの回答に基づいています。他の人がそれから利益を得ることを願っています。私はプログラミングが得意ではありませんが、うまくいけばコードは大丈夫に見えます。

if (FileUpload1.HasFile)
    {
        //Connect to Azure
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);

        // Create a reference to the file client.
        CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

        // Get a reference to the file share we created previously.
        CloudFileShare share = fileClient.GetShareReference("yourfilesharename");

        if (share.Exists())
        {


            // Generate a SAS for a file in the share
            CloudFileDirectory rootDir = share.GetRootDirectoryReference();
            CloudFileDirectory sampleDir = rootDir.GetDirectoryReference("folderthatyouuploadto");
            CloudFile file = sampleDir.GetFileReference(FileUpload1.FileName);

            Stream fileStream = FileUpload1.PostedFile.InputStream;

            file.UploadFromStream(fileStream);
            fileStream.Dispose();


        }
    }
8
AprilX