Вам нужно получить элементы из тела
[FunctionName("HttpTriggerCSharp")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]
HttpRequest req, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string name = req.Query["name"];
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
return name != null
? (ActionResult)new OkObjectResult($"Hello, {name}")
: new BadRequestObjectResult("Please pass a name on the query string or in the request body");
}
В вашем запросе вы можете иметь поле, содержащее байты файла в формате base 64.
предупреждение
Вероятно, это неправильный способ сделать что-то. Файлы могут быть слишком большими, соединения слишком ненадежными и т. Д. c.
Я бы предложил попробовать что-то вроде хранилища больших двоичных объектов для начальной загрузки и, если вам нужно описание, когда это будет сделано, вызовите функцию с именем файла и описанием.
Если описание не является большой проблемой, то, возможно, будет достаточно триггера для большого двоичного объекта.
Триггер хранилища BLOB-объектов
Вы можете найти официальное руководство в документации Microsoft о том, как настроить проект.
Вы также можете проверить доступ к BLOB с c#. Минимальный пример показан ниже:
[FunctionName("BlobTriggerCSharp")]
public static void Run([BlobTrigger("samples-workitems/{name}")] Stream myBlob, string name, ILogger log)
{
log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
}