![](/img/trans.png)
[英]C# - Download PDF from URL and convert it into base64 without saving it on a server
[英]Download file from url and convert to base64 async (C#)
我有 url 我需要下載文件並轉換為 base64 字符串
我寫了這段代碼來做到這一點
private string GetImageAsBase64(string url)
{
using (var client = new WebClient())
{
var bytes = client.DownloadData(url);
var base64String = Convert.ToBase64String(bytes);
return base64String;
}
}
如何使其異步使用返回類型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;
}
}
UPD
正如@Fildor指出的那樣,您想實例化一次HttpClient並將其注入 function。 一種非常天真的方法是使用擴展方法:
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);
}
}
即使這個問題已經得到回答,如上所述。
我認為你需要這樣的東西:
private async Task<string> GetImageAsBase64(string url)
{
using (var client = new WebClient())
{
var bytes = await client.DownloadDataTaskAsync(url);
var base64String = Convert.ToBase64String(bytes);
return base64String;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.