使用rest api从Web应用程序将文件上载到Azure文件存储

时间:2016-06-15 02:49:00

标签: c# asp.net rest azure-storage azure-web-sites

我不熟悉天蓝色,或休息api,或c#,但无论如何我必须这样做,我找不到一个好的文件来指导我......

所以有这个网络应用程序,目前是一个webform,而不是mvc ...将在Azure平台上托管,

此Web应用程序的主要功能是将用户文件上载到Azure文件存储。

文件可以是pdf或mp3等,而不是简单的文本或数据流或数据输入。

我被告知使用Azure REST API上传文件,但我真的不熟悉它,无法在线找到好的示例或教程或视频。微软目前的文件读起来像??????对我来说。

目前我只是上传到本地文件夹,因此代码如下: FileUpload1.PostedFile.SaveAs(Server.MapPath("fileupload\\" + FileUpload1.FileName)); 在C#;

我从哪里开始?我想我应该添加一个看起来像DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=yyy的StorageConnectionString,我已经有了。

然后我应该在c#中写一些像'post'的代码?这部分我真的不知道。这是一个愚蠢的问题吗?

我真的是初学者,我很感激任何帮助,谢谢你们(T。T)

2 个答案:

答案 0 :(得分:21)

Azure提供了一个nuget库,您可以使用该库来上载,并在Azure文件存储上执行其他“文件管理”类型的活动。

该库被称为: WindowsAzure.Storage

以下是实现这一目标的基础知识:

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

// Create a reference to the file client.
CloudFileClient = 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/

答案 1 :(得分:8)

这段代码基于我从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();


        }
    }