2

有没有办法让 MVC Web 应用程序的用户避免必须通过 MVC 应用程序上传文件并最终让应用程序将其传输到存储?

换句话说,是否可以为 Web 客户端提供正确的 SAS 令牌以将其直接上传到 Azure Blob 存储中的正确位置?

我已经看到客户端应用程序直接复制到 Blob 存储的示例,但在 Web 应用程序上找不到任何内容。谢谢你!

4

3 回答 3

2

目前这是不可能的,因为 Windows Azure 存储不支持 CORS。然而,在 \Build 会议存储团队的一次演讲中表示它即将到来。实现此目的的一种方法是仅按照@viperguyz 的链接中提到的那样在该存储帐户中托管用于上传的 HTML 页面,并使用 SAS 在该存储帐户中上传 blob。如果需要,您可以将自定义域映射到您的 Blob 存储帐户并使用该域名。自定义域名的问题是您将无法使用 SSL。

于 2013-01-12T05:58:54.453 回答
0

您可以从客户端上传,而无需使用 JavaScript 接触 MVC 站点,我写了一篇博客文章,其中包含有关如何执行此操作的示例 http://blog.dynabyte.se/2013/10/09/uploading-directly-to- windows-azure-blob-storage-from-javascript/代码位于 GitHub

它基于Gaurav Mantris 示例,并通过在 Blob 存储本身上托管 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 回答