Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript b64toBlob()只返回大小和类型,而不是完整的图像数据_Javascript_Base64_Blob - Fatal编程技术网

Javascript b64toBlob()只返回大小和类型,而不是完整的图像数据

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

下面是我的b64toBlob()函数,我使用它将base64转换为blob,这样我就可以通过附加到formData将其上载到服务器:

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');