簡體   English   中英

從 url 下載文件並轉換為 base64 異步(C#)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM