我需要一个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");
}
答案 0 :(得分:0)
对于您提到的用例,我没有带有C#示例代码的Azure函数,但是,我可以将您与可以帮助您的人联系起来。请点我。
您是否还考虑过使用Azure数据工厂将数据复制到Azure Blob存储或从中复制数据?或者,您可以评估this solution。
Aung Oo,Microsoft Azure存储工程