Azure功能-从3d参与者请求图像,然后将图像发送到请求者而不保存到本地目录中

问题描述 投票:0回答:1

我发现了许多有关下载图像的问题,正如我的代码所示,这就是我最终要做的。但是,那不是我想要的行为。我只希望它直接返回图像。

using System.Net;
using Microsoft.Extensions.Logging;
using System.IO;

public static async Task<HttpResponseMessage> Run(HttpRequest req, ILogger log, string data) 
{
    log.LogInformation("start function...");
    string qrData = $"{data}";//req.Query["id"];
    string QrGeneratorUrl = "https://api.qrserver.com/v1/create-qr-code/?size=100x100&data="+ qrData;
    log.LogInformation("QrUrl= " + QrGeneratorUrl);

    var filename = "temp.png";
    var filePath = Path.Combine(@"d:\home\site\wwwroot\QrGeneratorTest\"+filename);

    WebClient myWebClient = new WebClient();
    myWebClient.DownloadFile(QrGeneratorUrl, filePath);

    var response = new HttpResponseMessage(HttpStatusCode.OK);
    var fileStream = new FileStream(filePath, FileMode.Open);
    response.Content = new StreamContent(fileStream);
    return response;
}

我已经尝试将图像转换为字节流,并将该流添加到响应内容,我已经尝试将图像数据直接作为字符串内容放置...似乎没有任何作用-它仅在以下情况下才传输图像:本地文件,然后通过fileStream将其添加到响应中。有人知道我如何才能将收到的回复放入返回的回复中吗?或解释为什么不能完成?这是网络应用程序中存在的功能,我们正在尝试将其转移到功能中,并且该网络应用程序能够传递内容而不保存内容。使用字节流。但是我似乎无法在函数中复制它。

有两个原因导致我们没有直接致电qr服务器1)这是一个3d派对网站,因此它可能会崩溃,我们需要能够将其从一个位置换成新的提供商。2)我们需要构建url,以便它没有参数(?p = 1&q = 2&r = 3 ...),因为这将进入电子邮件,并且有一堆参数通常会将电子邮件标记为垃圾邮件。使用Azure(与我们的Web应用程序一样),我们可以构建如下网址:/ getImage / 1/2/3,不太可能被标记为垃圾邮件

任何见识将不胜感激!

image azure function httpresponse
1个回答
0
投票

您实际上需要添加内容处置标题。如果您使用的是aspnet core 2.0或更高版本,则可以使用:

return File(stream, "content/type", "FileDownloadName.ext");

有关标题的更多信息:https://stackoverflow.com/a/38909848/1384539

© www.soinside.com 2019 - 2024. All rights reserved.