TypeError: Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'
时间: 2023-12-24 21:04:35 浏览: 441
这个错误通常是因为传递给 `readAsArrayBuffer()` 方法的参数不是 `Blob` 类型。请确保传递给该方法的参数是有效的 `Blob` 对象。你可以使用 `File` 对象创建一个 `Blob` 对象,如下所示:
```javascript
const file = document.querySelector('input[type=file]').files[0];
const reader = new FileReader();
reader.readAsArrayBuffer(new Blob([file]));
```
如果你仍然遇到问题,请检查代码中传递给 `readAsArrayBuffer()` 方法的参数是否正确。
相关问题
TypeError: Failed to execute 'readAsArrayBuffer' on 'FileReader': parameter 1 is not of type 'Blob'.
这个错误提示发生在JavaScript中,当你试图使用`FileReader`的`readAsArrayBuffer`方法来读取文件时,但是提供的参数不是一个Blob对象。Blob对象是浏览器原生支持的数据块,通常用于表示不可见的二进制数据,比如文件内容。
`FileReader`的`readAsArrayBuffer`方法预期接收一个Blob对象,而你传入的可能是其他类型的参数,例如普通的File对象、字符串或者其他非Blob类型。
解决这个问题,你需要确保你在使用`readAsArrayBuffer`之前,确实获取到了正确的Blob对象。如果你是从HTML5 File API获取的文件,你应该先调用`File.files[0].getAsDataURL()`将其转为Blob,再使用`FileReader`:
```javascript
const fileInput = document.querySelector('input[type=file]');
fileInput.addEventListener('change', async function(e) {
const files = e.target.files;
if (files.length > 0) {
const file = files[0];
const blob = await convertFileToBlob(file);
const reader = new FileReader();
reader.readAsArrayBuffer(blob);
// ...后续处理
});
async function convertFileToBlob(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onloadend = () => {
resolve(reader.result);
};
reader.readAsDataURL(file);
});
}
```
在这个例子中,我们先使用`convertFileToBlob`函数把File对象转换为Blob,然后再读取。
"TypeError: Failed to execute 'readAsBinaryString' on 'FileReader': parameter 1 is not of type 'Blob'." found in
这个错误通常是因为传递给`readAsBinaryString()`方法的参数不是`Blob`类型。你可以检查传递给该方法的参数是否正确。如果你正在尝试读取文件,可以使用`File`对象创建`Blob`对象并将其传递给`readAsBinaryString()`方法。以下是一个示例:
```javascript
const file = document.getElementById('my-file-input').files[0];
const reader = new FileReader();
reader.onload = function(event) {
const contents = event.target.result;
console.log(contents);
};
reader.readAsBinaryString(new Blob([file]));
```
在这个示例中,我们首先获取文件输入元素中选择的文件。然后,我们使用`FileReader`对象创建了一个新的`FileReader`实例,并定义了一个`onload`事件处理程序,在读取文件时将文件内容存储在`contents`变量中。最后,我们使用`Blob`对象创建了一个新的`Blob`实例,并将其作为参数传递给`readAsBinaryString()`方法。
阅读全文