Что вы имеете в виду this does not stream
, я пытался связать входной BLOB-объект и вернуть его, это удалось. Возможно, вы могли бы сослаться на мой код ниже.
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
[Blob("test/test.mp4", FileAccess.Read)] Stream myBlob,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
byte[] bytes = new byte[myBlob.Length];
myBlob.Read(bytes, 0, bytes.Length);
myBlob.Seek(0, SeekOrigin.Begin);
var result = new FileContentResult(bytes, "video/mp4");
return result;
}
Обновление : Предположим, что вы хотите запросить имя динамического c блоба в HTTP-запросе, вы можете обратиться к приведенному ниже коду Привязать контейнер получить блоб и загрузить его в байты. Я передаю имя BLOB в параметре запроса HTTP.
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
[Blob("test", FileAccess.Read,Connection = "AzureWebJobsStorage")] CloudBlobContainer myBlob,
ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
string filename = req.Query["filename"];
CloudBlockBlob blob= myBlob.GetBlockBlobReference(filename);
await blob.FetchAttributesAsync();
long fileByteLength = blob.Properties.Length;
byte[] fileContent = new byte[fileByteLength];
for (int i = 0; i < fileByteLength; i++)
{
fileContent[i] = 0x20;
}
await blob.DownloadToByteArrayAsync(fileContent, 0);
var result = new FileContentResult(fileContent, "video/mp4");
return result;
}