从 HTML 网页 (C#) 将文件上传到 Azure Blob?

Upload file to Azure Blob from HTML webpage (C#)?

我想弄清楚如何从 html 表单中获取文件并将其保存到我的 Azure Blob 存储中。我发现很多关于为 JavaScript 执行此操作的帖子,但我正在尝试通过 C# 执行此操作。我发现的一个消息来源说要做

using (YourFileUpload.PostedFile.InputStream) { blockBlob.UploadFromStream((FileStream)YourFileUpload.PostedFile.InputStream); }

但是 PostedFile 不存在于 HttpPostedFileBase 对象中。

到目前为止我构建的代码是

    public static int UploadFile(string FileName, HttpPostedFileBase UploadedFile, int ExistingFileID = 0)
    {
        var StorageAccount = CloudStorageAccount.Parse(ConfigurationManager.AppSettings["StorageConnectionString"].ToString());
        var BlobClient = StorageAccount.CreateCloudBlobClient();
        var Container = BlobClient.GetContainerReference("ffinfofiles");
        var BlobBlock = Container.GetBlockBlobReference(FileName);
        var FileExtension = Path.GetExtension(UploadedFile.FileName.ToLower());

        using (UploadedFile.InputStream)
        {
            BlobBlock.UploadFromStream((FileStream)UploadedFile.InputStream);
        }

但是当我 运行 这个时我得到错误:

Unable to cast object of type 'System.Web.HttpInputStream' to type 'System.IO.FileStream'.

我需要用什么方法才能将文件上传到 Azure Blob?

您不应尝试将 UploadedFile.InputStream 转换为 FileStreamCloudBlockBlob.UploadFromStream 需要一个 Stream 对象,因此它应该能够直接与 UploadedFile.InputStream.

一起工作