javascript - PhoneGap FileReader/readAsDataURL Not Triggering Callbacks -
i using phonegap build build ios v7.1+ application , using weinre debug. using media-capture plugin , file api capture video in attempt base64 representation. can video recorder open, take video, , return file path. use resolvelocalfilesystemurl() file object readasdataurl() requires. problem filereader never calling onloadend callback.
i have been poking around day. putting console.log()'s everywhere think of. checked make sure ios version is supported. every variable expect yet callback not being called. have tried setting other callbacks none of them ever called, either. have tried replacing readasdataurl() readastext() still bupkis. have tried waiting 5 minutes since figured asynchronous call may take bit still nothing.
below code. below console output.
var elements = new object(); elements["video"] = $("#window_incident_create > .video > source")[0]; navigator.device.capture.capturevideo( function(files) { ( var in files ) { var file = files[i]; var name = file.name; var path = file.fullpath; if ( path.indexof("/private") === 0 ) path = "file://" + path.substr(8); else path = "file://" + path; var type = file.type; var lastmodifieddate = file.lastmodifieddate; var size = file.size; var reader = new filereader(); reader.onloadend = function(event) { console.log(3); elements["video"].type = type; elements["video"].src = "data:" + type + ";base64," + event.target.result; console.log(4); }; window.resolvelocalfilesystemurl( path, function(entry) { console.log(1, entry.nativeurl); reader.readasdataurl(entry); console.log(2); }, function(error) { console.log("0-0", error); } ); } }, function(error) { console.log("0-1", error); }, { limit: 1 } ); 1 "file:///var/mobile/applications/ab239984-fb9f-43c0-b699-3596ac8a43a8/tmp/capture/capturedvideo.mov"
2
reorganize code bit. put reader initialisation , onloadend callback inside resolvelocalfilesystemurl success callback.
something this:
var elements = new object(); elements["video"] = $("#window_incident_create > .video > source")[0]; navigator.device.capture.capturevideo( function(files) { ( var in files ) { var file = files[i]; var name = file.name; var path = file.fullpath; if ( path.indexof("/private") === 0 ) path = "file://" + path.substr(8); else path = "file://" + path; var type = file.type; var lastmodifieddate = file.lastmodifieddate; var size = file.size; window.resolvelocalfilesystemurl( path, function(entry) { console.log(1, entry.nativeurl); var reader = new filereader(); reader.onloadend = function(event) { console.log(3); elements["video"].type = type; elements["video"].src = "data:" + type + ";base64," + event.target.result; console.log(4); }; reader.readasdataurl(entry); console.log(2); }, function(error) { console.log("0-0", error); } ); } }, function(error) { console.log("0-1", error); }, { limit: 1 } );
Comments
Post a Comment