Ionic/Firebase 图片选择器/裁剪和上传问题



我试图实现功能来选择图像并裁剪它。之后,我想将其上传到火力基地。 由于某种原因,它根本不起作用,并且"readAsArrayBuffer"没有超过。 .

我对此很陌生,所以我非常感谢一些帮助:)

谢谢

这是我尝试过的:

例如,"newPath"看起来像这样:

"file:///storage/emulated/0/Android/data/io.ionic.starter/cache/
1565766305015-cropped.jpg?1565766307602"

"nameFile"看起来像这样:

"1565766305015-cropped.jpg".

-

constructor(private imagePicker: ImagePicker, private crop: Crop,
private file: File) {
let storageDb = firebase.storage();
this.storageRef = storageDb.ref();
}

pickImage() {
this.imagePicker.getPictures(this.imagePickerOptions).then((results) 
=> {
// tslint:disable-next-line: prefer-for-of
for (let i = 0; i < results.length; i++) {
this.cropImage(results[i]);
}
}, (err) => {
alert(err);
});
}  

cropImage(imgPath) {
this.crop.crop(imgPath, { quality: 50 })
.then(
newPath => {
try {
let n = newPath.lastIndexOf("/");
let x = newPath.lastIndexOf("g");
let nameFile = newPath.substring(n + 1, x + 1);
this.file.readAsArrayBuffer(newPath, nameFile).then((res) => {
let blob = new Blob([res], { type: "image/jpeg" });
var uploadTask = this.storageRef.child('images/' + this.event.id).put(blob);
uploadTask.on('state_changed', (snapshot) => {
let url = uploadTask.snapshot.downloadURL;
this.croppedImagepath = url;
}, (error) => {
alert("error: " + error);
}, () => { 
alert("uploaded");
let url = uploadTask.snapshot.downloadURL;
this.croppedImagepath = url;
})
})
}
catch (z) {
alert('error beim erstellen des blobs' + z);
}
},
error => {
alert('Error cropping image' + error);
}
);
}

> Cusious,你从哪里得到片段?实际上出现了另一个问题,他们以不同的方式使用 File 类:

readFile(file: any) {
const reader = new FileReader();
reader.onloadend = () => {
const formData = new FormData();
const imgBlob = new Blob([reader.result], {
type: file.type
});
formData.append('file', imgBlob, file.name);
this.uploadImageData(formData);
};
reader.readAsArrayBuffer(file);
}

最新更新