如何从MVC视图将文件上载到Azure blob存储

如何从MVC视图将文件上载到Azure blob存储,azure,file-upload,asp.net-mvc-5,azure-storage-blobs,asp.net-mvc-views,Azure,File Upload,Asp.net Mvc 5,Azure Storage Blobs,Asp.net Mvc Views,我正在编写一个MVC5互联网应用程序,希望得到一些帮助,将文件从我自己的文件系统上载到Azure Blob 以下是我的Azure上载代码功能: public void UploadFileToBlobStorage(string containerName, string blockBlogName, string fileName) { // Retrieve storage account from connection string. CloudStorageAccount

我正在编写一个MVC5互联网应用程序,希望得到一些帮助,将文件从我自己的文件系统上载到Azure Blob

以下是我的Azure上载代码功能:

public void UploadFileToBlobStorage(string containerName, string blockBlogName, string fileName)
{
    // 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(containerName);

    // Create the container if it doesn't already exist.
    container.CreateIfNotExists();

    container.SetPermissions(
        new BlobContainerPermissions
        {
            PublicAccess =
                BlobContainerPublicAccessType.Blob
        }); 

    // Retrieve reference to a blob named "myblob".
    CloudBlockBlob blockBlob = container.GetBlockBlobReference(blockBlogName);

    // Create or overwrite the "myblob" blob with contents from a local file.
    using (var fileStream = System.IO.File.OpenRead(fileName))
    {
        blockBlob.UploadFromStream(fileStream);
    }
}
以下是我上传测试文件的功能:

public void UploadTestFile(string localFileName)
{
    string containerName = "TestContainer";
    string blockBlogName = "Test.txt";
    AzureService azureService = new AzureService();
    azureService.UploadFileToBlobStorage(containerName, blockBlogName, localFileName);
}
我不知道如何从MVC视图调用UploadTestFile()函数,用户可以在MVC视图中浏览要上载的文件

我是否需要使用Ajax,或者我可以通过从MVC视图调用该方法来上传文件?我能帮点忙吗


提前感谢

从MVC视图调用UploadTestFile()函数的一种方法是使用Html.BeginForm()方法。我在下面举了一个例子:

@using (Html.BeginForm("UploadTestFile", "INSERT_YOUR_CONTROLLER_NAME_HERE", FormMethod.Post, new { enctype = "multipart/form-data" })) {
    <span>
        <input type="file" name="myFile" multiple /> <br>
        <input type="submit" value="Upload" />
    </span>

}
public void UploadFileToBlobStorage(
    string containerName, 
    string blockBlogName, 
    HttpFileCollectionBase files) 
{

    // .....

    // Use this:
    blockBlob.UploadFromStream(files[0].InputStream); 

    /* uploading the first file: 
       you can enumerate thru the files collection 
       if you are uploading multiple files */

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

[HttpPost]
public void UploadTestFile() 
{
    string containerName = "TestContainer";
    string blockBlogName = "Test.txt";
    AzureService azureService = new AzureService();

    // Notice the Request.Files instead of localFileName
    azureService.UploadFileToBlobStorage(
          containerName, blockBlogName, Request.Files);
}
请让我知道这对你是否有效