2

MVC Web アプリケーションのユーザーが MVC アプリケーションを介してファイルをアップロードし、最終的にアプリケーションがファイルをストレージに転送することを回避する方法はありますか?

つまり、Web クライアントに適切な SAS トークンを与えて、それを Azure Blob Storage の適切な場所に直接アップロードするにはどうすればよいでしょうか?

クライアント アプリが BLOB ストレージに直接コピーする例を見たことがありますが、Web アプリには何も見つかりません。ありがとう!

4

3 に答える 3

2

Windows Azure ストレージには CORS がサポートされていないため、現時点では不可能です。ただし、\Build 会議ストレージ チームでのプレゼンテーション中に、それが来ることを示しました。これを実現する 1 つの方法は、@viperguyz のリンクに記載されているように、そのストレージ アカウントでのみアップロード用の HTML ページをホストし、SAS を使用してそのストレージ アカウントに BLOB をアップロードすることです。必要に応じて、カスタム ドメインを BLOB ストレージ アカウントにマップし、そのドメイン名を使用できます。カスタム ドメイン名の問題は、SSL を使用できないことです。

于 2013-01-12T05:58:54.453 に答える
0

JavaScript を使用して MVC サイトに触れることなくクライアントからアップロードできます 。 windows-azure-blob-storage-from-javascript/コードは GitHub にあり ます

これはGaurav Mantris の例に基づいており、Blob Storage 自体で JavaScript をホストすることによって機能します。

于 2013-10-16T09:34:20.530 に答える
-1

確かに-ここに例があります:

using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;

    private string UploadFileToBlob(string file)
    {
        // Retrieve storage account from connection string
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));

        // Create the blob client
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

        // Retrieve reference to a previously created container
        CloudBlobContainer container = blobClient.GetContainerReference("mydeployments");

        // Retrieve reference to a blob named "myblob"
        var date = DateTime.UtcNow.ToString("yyyyMMdd-hhmmss-");
        var fileinfo = new FileInfo(file);
        if (fileinfo.Exists)
        {
            var fileToUpload = new FileInfo(file).Name;
            var filename = date + fileToUpload;
            try
            {
                CloudBlob blob = container.GetBlobReference(filename);

                // Create or overwrite the "myblob" blob with contents from a local file
                using (var fileStream = System.IO.File.OpenRead(file))
                {
                    blob.UploadFromStream(fileStream);
                }

                return blob.Uri.AbsoluteUri;
            }
            catch (Exception ex)
            {
                LogError("Error uploading file to blog: ", ex.Message);
                return "";
            }
        }

        LogError("Error - specified file does not exist: ", file);
        return "";
    }
于 2013-01-11T22:38:31.123 に答える