Как загрузить файл Excel в хранилище BLOB-объектов Azure, используя функции Azure с триггером HTTP? - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь загрузить файл Excel в хранилище BLOB-объектов Azure с помощью функций Azure (HTTP Trigger). Я приложил свой код. Он не работает должным образом.

Я получаю сообщения об ошибках типа "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;
        });

Я ожидаю загрузки файла Excel в хранилище BLOB-объектов Azure с помощью функции HTTP-триггера Azure.

1 Ответ

0 голосов
/ 05 июня 2019

В настоящее время 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;
});

РЕДАКТИРОВАТЬ : после быстрого Google - req.Content.ReadAsMultipartAsync(multipartStreamProvider).ContinueWith(t => ... может возвращать Task<List<FileDetails>>, поэтому попробуйтечто если вышеуказанное не сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...