Hi every body,
Today i’m trying to get the size of a file which is located in my app folder. I tried to use
window.resolveLocalFileSystemURL(myFileCompleteURL, function(fileEntry) {
fileEntry.file(function(fileObj) {
this.consoleLog += "fileObj.size : " + fileObj.size + "\r\n";
},
function(err){
this.consoleLog += "err : " + err + "\r\n";
});
})
But it doesn’t work…No error, no result…I didn’t find anything else to get file size with ionic / cordova…Anyone got an idea ?
thanks
no error, no result : perhaps not called ?
did you put debugger;
in it ?
what is there in the fileObj object?
The function seems to be not called…
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { Camera } from '@ionic-native/camera';
declare var window;
@Component({
selector: 'page-photo',
templateUrl: 'photo.html',
})
export class PhotoPage {
constructor(public navCtrl: NavController,
public navParams: NavParams,
private camera: Camera) { }
onTakePhoto(){
this.camera.getPicture({
quality: 100,
targetWidth: 900,
targetHeight: 600,
destinationType: this.camera.DestinationType.FILE_URI,
encodingType: this.camera.EncodingType.JPEG,
mediaType: this.camera.MediaType.PICTURE,
saveToPhotoAlbum: false,
sourceType: this.camera.PictureSourceType.CAMERA
}).then((imagedata) => {
window.resolveLocalFileSystemURL(imagedata, function(fileEntry) {
fileEntry.file(function(fileObj) {
console.log("fileObj.size : " + fileObj.size);
},
function(err){
console.log(err);
});
})
})
}
}
This is how I get the file size,
this.file.resolveLocalFilesystemUrl(fileUri).then(fileEntry => {
fileEntry.getMetadata((metadata) => {
console.log(metadata.size);//metadata.size is the size in bytes
....
}
....
}
4 Likes
This is my code… can you look into it…
But the code is not working in android… but it complies fine.
My code is here…
this.camera.getPicture(options).then((imageData) => {
let loading = this.loadingCtrl.create();
loading.present();
this.file.resolveLocalFilesystemUrl(imageData).then((oneFile: any) => {
this.file.readAsArrayBuffer(this.file.tempDirectory, oneFile.name).then(realFile => {
let type = 'jpg';
let newName = this.awsProvider.randomString(6) + new Date().getTime() + '.' + type;
this.awsProvider.getSignedUploadRequest(newName, type).subscribe(data => {
let reqUrl = data.signedRequest;
this.awsProvider.uploadFile(reqUrl, realFile).subscribe(result => {
this.awsProvider.getSignedFileRequest(newName).subscribe(res => {
this.images.push({Key:name, url: res});
loading.dismiss();
});
});
});
});
});
});
Thanks in advance
Here is how to do that
this.file.resolveLocalFilesystemUrl(uri).then(fileEntry=> {
fileEntry.getMetadata(function(metaData) {
//console.log(JSON.stringify(metaData));
return ((metaData.size/1024)/1024); //SIZE IN MB
},
err =>{
});
},
err =>{
});
Just to complement your answer:
return this.file.resolveLocalFilesystemUrl(fileURI).then(fileEntry => {
fileEntry.getMetadata((metadata) => {
let fileSize = metadata.size/1024/1024 ;
if (fileSize > 30) {
// If size is bigger than 30MB, return
console.log('file too big');
return;
}
console.log("metadata size in MB: ", metadata.size/1024/1024);
});
});