System.Convert.ToBase64String 返回的结果与输入到 System.Convert.FromB
System.Convert.ToBase64String returning different result than the input to System.Convert.FromBase64String
我正在编写一个Web应用程序,它将图像从Web保存到数据库中。目前,我用来保存图像的内容如下:
[WebMethod]
public static void Save(string pictures)
{
// pictures is an object containing the URL of the image along with some metadata
List<ImageObject> imageList = new JavaScriptSerializer().Deserialize<List<ImageObject>>(pictures);
for (int i = 0; i < imageList.Count; i++)
{
var webClient = new WebClient();
byte[] byteArray = webClient.DownloadData(imageList[i].URL);
imageList[i].Picture = byteArray;
}
// some SQL to save imageList
}
图像对象:
[DataContract]
public class ImageObject
{
[DataMember]
public string URL { get; set; }
[DataMember]
public string Picture { get; set; }
}
现在,这对于从 URL 下载就很好。保存到我的数据库的条目:
0xFFD8FFE000104A464946000101[...]331B7CCA7F0AD3A02DC8898F
为了显示此图像,我只需在检索后调用System.Convert.ToBase64String()
并将其用作图像src
。但是,我现在正在尝试为用户添加一些功能来上传自己的图片。我的函数,从<input />
调用:
function uploadPicture(){
var numPics = document.getElementById("uploadedPictures").files.length;
var oFReader = new FileReader();
oFReader.onload = function (oFREvent) {
var src = oFREvent.target.result;
document.getElementById('image').src = src;
}
oFReader.readAsDataURL(document.getElementById("uploadedPictures").files.length;
}
使用它时,这是我从浏览器获得的图像源(当原始图像仅为~500 KB时,超过2 MB(:
data:image/bmp;base64,/9j/4AAQSkZJRgABAgEAY[...]k8tTMZEBCsEbSeRYem493IHAfiHWq6vKlOv/Z
当用作源时,这将正确显示。但是,由于这不是实际的URL(并且WebClient.DownloadData()
仅限于<260个字符的URL(,我一直在尝试其他方法将此数据保存到我的数据库中。但是,我似乎找不到以与WebClient.DownloadData()
相同的格式保存它的功能。例如,我已经研究了将 base 64 字符串转换为图像并保存它,其中大多数答案似乎都使用 Convert.FromBase64String()
,但使用它似乎以不同的格式保存到我的数据库中:
0x64006100740061003A0069006D0[...]10051004500420041005100450042004
尝试在此返回上使用System.Convert.ToBase64String()
ZABhAHQAYQA6AGkAbQBhAGcAZQAvAGIAbQBwADsAYgBh[...]UwBlAFIAWQBlAG0ANAA5ADMASQBIAEEAZgBpAEgAVwBxADYAdgBLAGwATwB2AC8AWgA=
这与我以前Convert.FromBase64String()
的不同。到目前为止,我在Google上发现的其他尝试将其保存为与图像相同的格式或显示的内容尚未奏效。
因此,我想知道是否有一种方法可以将结果从FileReader
转换为与 WebClient.DownloadData()
对 URL 相同的格式,或者是否有某种方法可以将0x6400[...]
数据转换为可以通过将其用作<img>
源来显示的格式。
事实证明,保存到数据库中的数据以 0x64006100[....]
开头而不是0xFFD8FFE0[...]
的原因是由于我忘记剥离初始data:image;base64,
的 URI。完成此操作后,所有内容都会保存并使用 System.Convert.ToBase64String()
正确读取。
- 当脚本由system.js加载时,如何要求('electron')
- how to convert html <div> to pdf
- 通过sdk/system/events在修改请求观测器上测试http
- 使用System从C#集合创建JSON数组.网状物剧本序列化
- 使用System.JS添加模块
- system.err风格的控制台以javascript打印
- 调用 db.system.js $where 中的函数
- Dojo Build System - 使用带有谷歌地图API的异步插件
- 我们如何将URL的PDF转换为convert.javascript中的ToBase64String
- PHP:在web浏览器中输出system/Shell_exec命令输出
- OpenLayer Coordinate System
- "执行处理程序'的子请求时出错;System.Web.UI.Page'"同时使用JQu
- 如何在浏览器中集成 System.js 和 babel
- 如何在 Karma 中配置 System.js 以测试取决于时刻.js的代码
- 如何访问 mongos db.system.js in meteor
- Google Chrome Heap Snapshots (closure), (array), (system), (
- System.Convert.ToBase64String 返回的结果与输入到 System.Convert.FromB
- Convert JavaScript /[^A-Za-z0-9+/=]/g to Java
- “System.out.println”在JS中是如何工作的.:).
- child_process.execFile 不适用于 phantomjs 和 highcharts-convert.j