Eug*_*ukh -1 c# asp.net asp.net-core
我有需要下载文件并转换为 Base64 字符串的 url
我写了这段代码来做到这一点
private string GetImageAsBase64(string url)
{
using (var client = new WebClient())
{
var bytes = client.DownloadData(url);
var base64String = Convert.ToBase64String(bytes);
return base64String;
}
}
Run Code Online (Sandbox Code Playgroud)
如何使其异步使用返回类型Task<string>?
你就快到了,使用GetByteArrayAsync:
private async Task<string> GetImageAsBase64Async(string url) // return Task<string>
{
using (var client = new HttpClient())
{
var bytes = await client.GetByteArrayAsync(url); // there are other methods if you want to get involved with stream processing etc
var base64String = Convert.ToBase64String(bytes);
return base64String;
}
}
Run Code Online (Sandbox Code Playgroud)
UPD
正如@Fildor指出的,您希望实例化HttpClient一次并将其注入到函数中。一个非常简单的方法是使用扩展方法:
void Main()
{
HttpClient client = new HttpClient(); // can reuse
client.GetImageAsBase64("...");
client.GetImageAsBase64("...");
client.GetImageAsBase64("...");
}
static class HttpclientExtensions
{
public static async Task<string> GetImageAsBase64(this HttpClient client, string url)
{
var bytes = await client.GetByteArrayAsync(url);
return Convert.ToBase64String(bytes);
}
}
Run Code Online (Sandbox Code Playgroud)