如何获取C#脚本Azure函数以从C驱动器读取文件,并写入Blob存储?

时间:2019-10-12 20:30:30

标签: azure azure-functions

我需要一个c#脚本Azure函数才能从C驱动器读取文件并将其写入Blob存储帐户。我想我对如何写文件有一定的了解,但是我怎么读呢?

我是一位想了解功能的超级专家,请放轻松!我正在想象一个允许选择C驱动器上文件的网页,其中包含以下内容:

str

用户选择一个文件,然后单击一个链接,该链接是Azure函数的http触发器,该函数将文件上传到Blob存储帐户。

如果合理的话,我需要获取函数以读取C驱动器上的文件。我已经阅读了一些c#指南,并且尝试使用c#脚本,因为它似乎比c#更少学习。通过从演示http触发器函数中复制代码,并添加一些我发现的谷歌搜索代码,我取得了一些进步。例如,此代码将一些文本写入Blob:

<label for="Image">Select the image file to upload: </label><input type="file" name="Image" />. 

我认为我需要将myOutputBlob的类型更改为流,我想我可能可以通过将流写入blob来弄乱自己的方式,但是我不明白如何读取文件C盘。

例如,我认为我从演示中复制的HttpRequest类(用于req参数)来自Microsoft.AspNetCore.Http命名空间,但这似乎只有几个方法和属性,而我什么也看不到看起来像是要在我的C盘上读取文件。

对于任何解释,任何代码,让我更进一步的任何事情,我将不胜感激。请记住,我不会理解针对C#开发人员级别的人员的东西!

如果相关,这是我的function.json文件:

#r "Newtonsoft.Json"
#r "Microsoft.AspNetCore.Mvc"

using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
//added by me
using Microsoft.Azure.Storage.Blob;
using Microsoft.Azure.Storage;

public static async Task<IActionResult> Run(HttpRequest req, TextWriter myOutputBlob, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    // I think we're using the Namespace: Microsoft.AspNetCore.Http
    string name = req.Query["name"];

    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    name = name ?? data?.name;
    myOutputBlob.Write(name);

    return name != null
        ? (ActionResult)new OkObjectResult($"Hello, {name}")
        : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}

1 个答案:

答案 0 :(得分:0)

对于您提到的用例,我没有带有C#示例代码的Azure函数,但是,我可以将您与可以帮助您的人联系起来。请点我。

您是否还考虑过使用Azure数据工厂将数据复制到Azure Blob存储或从中复制数据?或者,您可以评估this solution

Aung Oo,Microsoft Azure存储工程