我发现了许多有关下载图像的问题,正如我的代码所示,这就是我最终要做的。但是,那不是我想要的行为。我只希望它直接返回图像。
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,不太可能被标记为垃圾邮件
任何见识将不胜感激!
您实际上需要添加内容处置标题。如果您使用的是aspnet core 2.0或更高版本,则可以使用:
return File(stream, "content/type", "FileDownloadName.ext");