Javascript 将二进制blob(带有XML文件)发送到客户端时遇到问题
服务器向我发送一个包含blob的byte[]数组(其中包含XML内容)的对象。JavaSpring将这个字节数组转换为base64格式,所以最后在客户端,我将获得blob的base64数据 我从服务器获得的响应: 来自服务器的响应:{content:“base64BlobHere”} 在客户端,我请求获取xml内容Javascript 将二进制blob(带有XML文件)发送到客户端时遇到问题,javascript,xml,binary,blob,transform,Javascript,Xml,Binary,Blob,Transform,服务器向我发送一个包含blob的byte[]数组(其中包含XML内容)的对象。JavaSpring将这个字节数组转换为base64格式,所以最后在客户端,我将获得blob的base64数据 我从服务器获得的响应: 来自服务器的响应:{content:“base64BlobHere”} 在客户端,我请求获取xml内容 getXmlContent() { //makeRequestService.getXmlContent is only an observable that is making
getXmlContent() {
//makeRequestService.getXmlContent is only an observable that is making a GET Request
this.makeRequestService.getXmlContent.subscribe((response)=> {
const file = new FileReader();
file.onload = res => {
//Here I should be able to read the content of the file as text/string.
console.log(res.target);
};
file.readAsText(b64ToBlob(response.content));
})
}
为了从文件中读取数据,我尝试将base64内容转换为blob以获取数据
b64ToBlob(b64Data, contentType = "text/xml", sliceSize = 512) {
const byteCharacters = atob(b64Data);
const byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
const slice = byteCharacters.slice(offset, offset + sliceSize);
const byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
const byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
const blob = new Blob(byteArrays, { type: contentType });
return blob;
}
b64ToBlob(b64Data,contentType=“text/xml”,sliceSize=512){
常量ByTechCharacters=atob(B64数据);
常量字节数组=[];
for(让offset=0;offset
我想我遗漏了什么,我试图从xml文件中读取数据。我很高兴收到一些关于如何处理此问题的建议。您能否与我们共享Blob数据,或者在b64Toblob函数之前和之后的console.log结果是什么?您好,作为响应。我将获得下一个base64值: