将Base64字符串转换为图像并保存

174

这是我的代码:

protected void SaveMyImage_Click(object sender, EventArgs e)
        {
            string imageUrl = Hidden1.Value;
            string saveLocation = Server.MapPath("~/PictureUploads/whatever2.png") ; 


            HttpWebRequest imageRequest = (HttpWebRequest)WebRequest.Create(imageUrl);
            WebResponse imageResponse = imageRequest.GetResponse();

            Stream responseStream = imageResponse.GetResponseStream();

            using (BinaryReader br = new BinaryReader(responseStream))
            {
                imageBytes = br.ReadBytes(500000);
                br.Close();
            }
            responseStream.Close();
            imageResponse.Close();

            FileStream fs = new FileStream(saveLocation, FileMode.Create);
            BinaryWriter bw = new BinaryWriter(fs);
            try
            {
                bw.Write(imageBytes);
            }
            finally
            {
                fs.Close();
                bw.Close();
            }
        }
}

顶部的imageUrl声明接收一个Base64图像字符串,我想将其转换为图像。 我认为我的代码集仅适用于像“www.mysite.com/test.jpg”这样的图像,而不适用于Base64字符串。 有人有建议吗? 谢谢!


尝试使用以下代码:byte[] bytesContent = Convert.FromBase64String(Str64File); - گلی
11个回答

0
在NetCore 6.0中,您可以使用HttpClient和新的File类中的异步方法。
实现非常简单:
static async Task DownloadFile(string imageUrl, string pathToSave)
{
    var content = await GetUrlContent(url);
    if (content != null)
    {       
        await File.WriteAllBytesAsync(pathToSave, content);
    }
}

static async Task<byte[]?> GetUrlContent(string url)
{
    using (var client = new HttpClient())
    using (var result = await client.GetAsync(url))
        return result.IsSuccessStatusCode ? await result.Content.ReadAsByteArrayAsync():null;
}

使用方法:

await DownloadFile("https://example.com/image.jpg", @"c:\temp\image.jpg");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接