"TypeError: Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'
时间: 2024-10-11 18:11:39 浏览: 155
这个错误通常是当你尝试将非Blob类型的对象添加到FormData对象中时发生的。在前端文件上传中,`Blob`对象代表浏览器中的二进制数据,比如图片、音频或视频文件。
当你看到`TypeError: Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'`,这意味着你在调用`formData.append()`时,提供的第二个参数不是一个有效的Blob对象。这可能是以下几种情况之一:
1. **文件选择错误**:如果你从input[type="file"]获取文件,确保正确地读取了文件,并将其转换成Blob。例如,使用HTML5 File API:
```javascript
let fileInput = document.querySelector('input[type=file]');
fileInput.addEventListener('change', (e) => {
let files = e.target.files;
if (files.length > 0) {
let file = files[0];
let blob = URL.createObjectURL(file);
formData.append('file', blob);
}
});
```
2. **直接传字符串或对象**:`append`方法期望的是Blob,而不是普通的字符串或JavaScript对象。确保传递给它的值是通过`new Blob([data], {type})`创建的。
3. **处理异步**:如果你的文件读取是在异步操作中完成的,确保在`append`之前回调中处理完了文件。
检查上述问题并相应调整代码应该能解决这个问题。如果你还是遇到问题,记得提供完整的错误上下文以便于诊断。
阅读全文