我可以下载吗?一个数据uri,而不需要我自己做
本文关键字:uri 数据 不需要 自己做 我自己 一个 下载 我可以 | 更新日期: 2023-09-27 18:17:09
也许它不是一个名为WebClient类的责任,把一个数据uri变成一个字节[],但我尝试了
var client = new WebClient();
var result = client.DownloadData(uri);
给出一个类似于
的uri数据:图像/gif; base64, R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
并得到一个webeexception说
无法识别URI前缀。
如何以最简单的方式解码数据uri ?
用
解码这样一个uri的问题 Convert.FromBase64String(str)
是我需要提取部分
R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
首先,这当然是一个微不足道的任务。
然而,当文件变大时,这将需要我分配大量内存来获得一个几乎相等的字符串。Convert.FromBase64String
没有offset参数,这是一个谜。
如果我不想要额外的分配,我需要自己做整个base64解码吗?
很抱歉,您只能通过使用特定的Encoding
基类来转换字符串的一部分。(而不是一次转换整个内容)
如果你处理的是web的东西,我猜你想要UTF8
以下几行:(这个例子并没有完全按照你想要的做)
string completeMessage = "";
int byteStepSize = 4;
for(int i=0; i < byteStepSize; i+= byteStepSize)
{
string subStr = str.SubString(i, i+byteStepSize);
completeMessage += encoding.UTF8.GetString(Convert.FromBase64String(subStr));
}
您可以(理论上)以这种方式流式传输base64编码的字符串,从而避免一次完全分配它。