TypeError: Failed to execute 'createObjectURL' on 'URL': Overload resolution failed
TypeError: Failed to execute 'createObjectURL' on 'URL': Overload resolution failed
我想在我的 React 应用程序中添加文件上传功能,但 运行 遇到了问题。当我尝试上传第一张图片时,效果很好。文件资源管理器对话框关闭并显示我的图片。用我的文件资源管理器中的另一张图片覆盖该图片也可以。
但是,当我在覆盖时取消文件资源管理器时,出现以下错误:
TypeError: Failed to execute 'createObjectURL' on 'URL': Overload resolution failed.
这是我的相关代码:
showImage = (e) =>{
this.setState({image: URL.createObjectURL(e.target.files[0])})
}
render() {
return (
<div className="content">
<input
accept="image/*"
className="input"
id="icon-button-file"
type="file"
onChange={this.showImage}
/>
<label htmlFor="icon-button-file">
<IconButton
className="image"
aria-label="upload picture"
component="span"
>
{ this.state.image == null ? <AddAPhotoIcon className="icon" /> :
<img src={this.state.image} alt="test" className="picture"/> }
</IconButton>
</label>
</div>
)
我认为错误意味着文件数组可能为空。您可能想在访问成员之前检查数组是否为空。
if(e.target.files.length !== 0){
this.setState({image: URL.createObjectURL(e.target.files[0])})
}
dataURLToBlob(dataurl) {
let arr = dataurl.split(',');
let mime = arr[0].match(/:(.*?);/)[1];
let bstr = atob(arr[1]);
let n = bstr.length;
let u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], { type: mime });
},
showImage = (e) =>{
this.setState({image: URL.createObjectURL(dataURLToBlob(e.target.files[0]))})
}
我想在我的 React 应用程序中添加文件上传功能,但 运行 遇到了问题。当我尝试上传第一张图片时,效果很好。文件资源管理器对话框关闭并显示我的图片。用我的文件资源管理器中的另一张图片覆盖该图片也可以。
但是,当我在覆盖时取消文件资源管理器时,出现以下错误:
TypeError: Failed to execute 'createObjectURL' on 'URL': Overload resolution failed.
这是我的相关代码:
showImage = (e) =>{
this.setState({image: URL.createObjectURL(e.target.files[0])})
}
render() {
return (
<div className="content">
<input
accept="image/*"
className="input"
id="icon-button-file"
type="file"
onChange={this.showImage}
/>
<label htmlFor="icon-button-file">
<IconButton
className="image"
aria-label="upload picture"
component="span"
>
{ this.state.image == null ? <AddAPhotoIcon className="icon" /> :
<img src={this.state.image} alt="test" className="picture"/> }
</IconButton>
</label>
</div>
)
我认为错误意味着文件数组可能为空。您可能想在访问成员之前检查数组是否为空。
if(e.target.files.length !== 0){
this.setState({image: URL.createObjectURL(e.target.files[0])})
}
dataURLToBlob(dataurl) {
let arr = dataurl.split(',');
let mime = arr[0].match(/:(.*?);/)[1];
let bstr = atob(arr[1]);
let n = bstr.length;
let u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], { type: mime });
},
showImage = (e) =>{
this.setState({image: URL.createObjectURL(dataURLToBlob(e.target.files[0]))})
}