无法将捕获的图像上传到firebase存储
问题描述:
我试图通过Ionic 2做小应用程序,允许我通过相机捕获图像并将所有捕获的图像上传到firebase存储并将捕获的图像URL存储到firebase数据库中。无法将捕获的图像上传到firebase存储
我做这些教程,但它不工作,并上传到火力存储没有图像,
链接
http://www.offlineprogrammer.com/upload-images-firebase-storage-using-ionic-framework/ https://www.youtube.com/watch?v=6yGrLWq-oIo
这些我码U可以想看看我是否犯了一些错误
个app.component.ts
...
import firebase from 'firebase';
...
constructor(...) {
platform.ready().then(() => {
// Okay, so the platform is ready and our plugins are available.
// Here you can do any higher level native things you might need.
statusBar.styleDefault();
splashScreen.hide();
});
firebase.initializeApp({
apiKey: "XXXXXXXXXXXX",
authDomain: "XXXXXXXXXXXXX",
databaseURL: "XXXXXXXXXXX",
projectId: "XXXXXXXXX",
storageBucket: "XXXXXXXXXX",
messagingSenderId: "XXXXXXXXXX"
});
}
home.html做为
<ion-content class="footer">
<ion-item>
<img class="img-responsive" src="{{ myPhotoURL }}" />
</ion-item>
</ion-content>
home.ts
export class HomePage{
public myPhotosRef: any;
public myPhoto: any;
public myPhotoURL: any;
constructor(...){
this.myPhotosRef = firebase.storage().ref('/Photos/');
}
takePicture(){
const options: CameraOptions = {
quality: 80,
destinationType: this.camera.DestinationType.DATA_URL,
sourceType: this.camera.PictureSourceType.CAMERA,
allowEdit: true,
encodingType: this.camera.EncodingType.JPEG,
saveToPhotoAlbum: false
}
this.camera.getPicture(options).then((imageData) => {
this.myPhoto = imageData;
this.uploadPhoto();
});
}
private uploadPhoto(): void {
this.myPhotosRef.child(this.generateUUID()).child('myPhoto.png')
.put(this.myPhoto, 'base64', { contentType: 'image/png' })
.then((savedPicture) => {
this.myPhotoURL = savedPicture.downloadURL;
});
}
private generateUUID(): any {
let d = new Date().getTime();
let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx'.replace(/[xy]/g, function (c) {
let r = (d + Math.random() * 16) % 16 | 0;
d = Math.floor(d/16);
return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
return uuid;
}
}
答
你必须如下所示与因此PNG
取代JPEG
你的contentType: 'image/png'
。
encodingType: this.camera.EncodingType.PNG,
,还可以设置这个作为true
saveToPhotoAlbum: true
答
我解决了这个问题,通过这些变化
takePicture(){
const options: CameraOptions = {
quality : 75,
destinationType : this.camera.DestinationType.DATA_URL,
sourceType : this.camera.PictureSourceType.CAMERA,
allowEdit : true,
encodingType: this.camera.EncodingType.JPEG,
saveToPhotoAlbum: true
}
this.camera.getPicture(options).then((imageData) => {
this.myPhoto = imageData;
this.uploadPhoto();
});
}
private uploadPhoto(): void {
this.myPhotosRef.child(this.generateUUID()).child('myPhoto.JPEG')
.putString(this.myPhoto, 'base64', { contentType: 'image/JPEG' })
.then((savedPicture) => {
this.myPhotoURL = savedPicture.downloadURL;
});
}
由于没有@Sampath,是的,我忘了改JPEG –