angular - Angular:无法在“FileReader”上执行“readAsDataURL”:参数 1 不是“Blob”类型
问题描述
我试图在以角度 2 裁剪图像后上传图像,但 fileReader 返回错误,指出文件不是 blob 类型。
这是html:
<input type="file"
accept="image/*"
(change)="processFile($event)">
<button *ngIf="imageChangedEvent" (click)="uploadImage()"
type="button">Upload Image</button>
<image-cropper
[imageChangedEvent]="imageChangedEvent"
[maintainAspectRatio]="true"
[aspectRatio]="4 / 3"
[resizeToWidth]="422"
format="png"
(imageCropped)="imageCropped($event)"
></image-cropper>
ts文件:
class FileSnippet{
static readonly IMAGE_SIZE={width:750,height:422}
constructor(public src:string,public file:File){}
}
//component starts
selectedFile:FileSnippet;
imageChangedEvent:any;
imageCropped(file:File){
if(this.selectedFile){
return this.selectedFile.file=file;
}
return this.selectedFile= new FileSnippet('',file);
}
processFile(event:any){
this.selectedFile=undefined;
const URL=window.URL;
let file,img;
if((file=event.target.files[0]) && (file.type==='image/jpeg' || file.type==='image/png')){
img=new Image();
const self=this;
img.onload=function(){
if(this.width>FileSnippet.IMAGE_SIZE.width && this.height>FileSnippet.IMAGE_SIZE.height){
self.imageChangedEvent=event;
}
}
img.src=URL.createObjectURL(file);
}else{
}
}
uploadImage(){
if(this.selectedFile){
const reader=new FileReader();
reader.addEventListener('load',(event:any)=>{
//upload image using service
});
reader.readAsDataURL(this.selectedFile.file);
}
}
}
当我尝试上传文件而不裁剪它们时,fileReader 工作正常。有任何想法吗?
解决方案
推荐阅读
- object-detection - 导出模型的 TF 对象检测输入类型
- python - 如何在json字段上对熊猫数据框进行排序
- swift - 为什么 NSAttributedString 的属性会影响其他 AttributedString?
- sql - 求和直到达到阈值,然后重置计数器
- python - 计算python中函数的条目数
- ios - 如何比较两个图像并突出差异?
- reactjs - 反应/无法重置当前状态
- google-cloud-platform - 使用 gsutil 自动将本地存储的文件上传到 Cloud Storage
- c# - 处理字符串中的子字符串的有效方法
- python - 如何在python中为oracle连接传递变量值