【问题标题】:How to Upload excel file in a Azure blob storage using Azure Functions with HTTP trigger?如何使用带有 HTTP 触发器的 Azure Functions 在 Azure Blob 存储中上传 excel 文件?
【发布时间】:2019-10-20 23:33:01
【问题描述】:

我正在尝试使用 Azure 函数(HTTP 触发器)在 azure blob 存储中上传 excel 文件。我附上了我的代码。它无法正常工作。

我收到"Cannot implicitly convert type 'System.Threading.Tasks.Task<System.Collections.Generic.List<FileUpload1.Function1.FileDetails>>' to 'FileUpload1.Function1.FileDetails' FileUpload" 之类的错误

请帮帮我。

    [FunctionName("Function1")]
    public static FileDetails  Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequestMessage req,
        ILogger log)
    {
        if (!req.Content.IsMimeMultipartContent("form-data"))
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }
        var multipartStreamProvider = new AzureBlobStorageMultipartProvider(BlobHelper.GetWebApiContainer());
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse("configuratorstorage1");
        CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
        CloudBlobContainer container = blobClient.GetContainerReference("excelfiles");
        //var count = container.ListBlobs().Count(); return
        return req.Content.ReadAsMultipartAsync(multipartStreamProvider).ContinueWith(t =>
        {
            if (t.IsFaulted)
            {
                throw t.Exception;
            }
            AzureBlobStorageMultipartProvider provider = t.Result;
            return provider.Files;
        });

我希望我必须使用 azure 函数 HTTP 触发器在 azure blob 存储中上传 excel 文件。

【问题讨论】:

标签: c# azure azure-functions azure-cosmosdb azure-blob-storage


【解决方案1】:

目前,req.Content.ReadAsMultipartAsync(multipartStreamProvider).ContinueWith(t => ... 正在返回 Task<FileDetails>。你需要await它来获取你要返回的对象public static FileDetails Run()

return await req.Content.ReadAsMultipartAsync(multipartStreamProvider).ContinueWith(t =>
{
    if (t.IsFaulted)
    {
        throw t.Exception;
    }
    AzureBlobStorageMultipartProvider provider = t.Result;
    return provider.Files;
});

编辑:在快速谷歌之后 - req.Content.ReadAsMultipartAsync(multipartStreamProvider).ContinueWith(t => ... 可能会返回 Task<List<FileDetails>>,所以如果上述方法不起作用,请尝试。

【讨论】:

    猜你喜欢
    • 2017-10-29
    • 2020-04-03
    • 2018-10-11
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 2021-08-31
    相关资源
    最近更新 更多