Javascript b64toBlob()只返回大小和类型,而不是完整的图像数据
下面是我的b64toBlob()函数,我使用它将base64转换为blob,这样我就可以通过附加到formData将其上载到服务器:Javascript b64toBlob()只返回大小和类型,而不是完整的图像数据,javascript,base64,blob,Javascript,Base64,Blob,下面是我的b64toBlob()函数,我使用它将base64转换为blob,这样我就可以通过附加到formData将其上载到服务器: function b64toBlob(b64Data, contentType, sliceSize) { contentType = contentType || ''; sliceSize = sliceSize || 512; var byteCharacters = atob(b64Data); var byteArray
function b64toBlob(b64Data, contentType, sliceSize) {
contentType = contentType || '';
sliceSize = sliceSize || 512;
var byteCharacters = atob(b64Data);
var byteArrays = [];
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
var slice = byteCharacters.slice(offset, offset + sliceSize);
var byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
var blob = new Blob(byteArrays, { type: contentType });
return blob;
}
但当我运行它时,它只返回Blob(15598){size:15598,键入:“image/jpeg”}
而不返回图像数据
----更新:
我确信这不是关于后端的错误(因为我在其他组件中使用相同的API进行上传),但是,下面是我的其余代码:
(我使用的是react和'that'等于此)
下面是:(第一个是我得到的,第二个是我必须得到的):
控制台中不显示blob的内容。使用:
[]控制台中不显示blob的内容。使用:
[]哇,一切都很好,正如预期的那样!我刚刚在formData.append()上丢失了文件名 我刚刚为它添加了一个名称,如下所示:
photosformdata.append('files', theblob, 'image.jpg');
哇,一切都很好,正如预期的那样!我刚刚在formData.append()上丢失了文件名 我刚刚为它添加了一个名称,如下所示:
photosformdata.append('files', theblob, 'image.jpg');
考虑到当我将它发送到服务器时,服务器无法解析它并找到要上传的图像数据,我认为问题不在那里…功能正常工作。这意味着错误或您将文件发送到服务器的方式。但我只是简单地将b64toBlob放入一个变量并从中获取console.log。在将其发送到服务器之前,它确实令人困惑:((你如何将数据发送到服务器?你使用哪台服务器?考虑到当我将数据发送到服务器时,服务器无法解析数据并找到要上载的图像数据,我认为问题不在那里…函数工作正常。这意味着错误或你将文件发送到服务器的方式。或在服务器上。但我只是简单地将b64toBlob I在将其发送到服务器之前,它确实令人困惑:((如何将数据发送到服务器?使用哪台服务器?
var b = b64toBlob(b64, 'image/jpeg')
var fileReader = new FileReader();
fileReader.addEventListener('loadend', (e) => {
console.log(e.srcElement.result);
});
fileReader.readAsText(b);
photosformdata.append('files', theblob, 'image.jpg');