Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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 有时获取:执行失败';readAsDataURL';在';文件读取器';:参数1的类型不是';水滴';_Javascript_Vue.js_Base64_Nuxt.js - Fatal编程技术网

Javascript 有时获取:执行失败';readAsDataURL';在';文件读取器';:参数1的类型不是';水滴';

Javascript 有时获取:执行失败';readAsDataURL';在';文件读取器';:参数1的类型不是';水滴';,javascript,vue.js,base64,nuxt.js,Javascript,Vue.js,Base64,Nuxt.js,因此,我正在使用imageupload组件将配置文件图像作为base64字符串上传到Rails API后端。到目前为止,一切正常,但有时会出现以下错误: 未能在“FileReader”上执行“readAsDataURL”:参数1不是“Blob”类型 这是我的代码: 用于选择和编码图像的Javascript函数 选择图像(e){ const selectedImage=e.target.files[0]//获取图像 此.createBase64图像(选择图像) }, createBase64Ima

因此,我正在使用imageupload组件将配置文件图像作为base64字符串上传到Rails API后端。到目前为止,一切正常,但有时会出现以下错误:

未能在“FileReader”上执行“readAsDataURL”:参数1不是“Blob”类型

这是我的代码:

用于选择和编码图像的Javascript函数

选择图像(e){
const selectedImage=e.target.files[0]//获取图像
此.createBase64图像(选择图像)
},
createBase64Image(文件对象){
const reader=new FileReader()
reader.onload=(e)=>{
this.form.profile_image=e.target.result
}
reader.readAsDataURL(fileObject)
}
HTML


有一种可能是,只有在对文件做了一点小的更改后热重新加载页面时,才会出现此错误

编辑


错误被解决了。选择图片并希望选择其他图片后,不能按“取消”,因为这将触发错误,因为它将更改为“未选择文件”。因此,您需要将reader.readAsDataURL放在If语句中。

您需要检查作为输入的值是否为blob:

selectImage(e) {
  const selectedImage = e.target.files[0]; // get image
  if (selectedImage instanceof Blob) {
    this.createBase64Image(selectedImage);
  } else {
    //not a blob, cancel/close happened
  }
},

在else分支中,可以对发生取消/关闭时的情况进行一些处理

如果要将其转换为base64格式,则不需要将其作为文件对象传递,您可以将其作为字符串发送,它失败的原因也是因为您正在格式化它。当错误发生时,fileObject的值是多少?@ArjunKanungo嗯,它是字符串,对吗?这是我的输出:@LajosArpad我知道是什么触发了这个错误。当我在已选择图像后打开文件选择器时,当我取消/关闭文件选择器而不是选择其他图片时,会出现此错误。你知道我应该换什么来解决这个问题吗?