Ionic 2 - (window as any).resolveLocalFileSystemURL() 抛出错误
Ionic 2 - (window as any).resolveLocalFileSystemURL() throwing error
我有一些使用相机的打字稿代码:
this.camera.getPicture(this.optionsGetCamera).then((imageURI) => {
if (this.platform.is('ios')) {
this.crop.crop(imageURI, { quality: 100 }).then(newPath => {
console.log(newPath);
(window as any).resolveLocalFileSystemURL(newPath, function (fileEntry) {
this.readFile(fileEntry);
});
}).catch((error) => { ...
当我 运行 应用程序并使用此代码中使用的相机功能时,我在控制台中收到错误消息(我 运行 在使用 -lc 的设备上查看日志的参数):
console.error: ERROR ->
{"line":58535,"column":81,"sourceURL":"http://192.168.1.131:8100/build/main.js","__zone_symbol__currentTask":{"type":"microTask","state":"notScheduled","source":"Promise.then","zone":"angular","cancelFn":null,"runCount":0}}
line 58535
是这样的:
window.resolveLocalFileSystemURL(newPath, function (fileEntry) {
此行位于 ionic 在构建时创建的 main.js 文件中。我一直在试图理解 "source":"Promise.then"
,因为它似乎可能指向问题(有承诺?还是没有使用?)。谢谢。
使用来自 ionic native 的 File class The Typescript class
不要使用 javascript any 类型
参考 https://ionicframework.com/docs/native/file/
import {Component} from '@angular/core';
import {File} from 'ionic-native';
...
File.listDir(cordova.file.applicationDirectory,
'mySubFolder/mySubSubFolder').then(
(files) => {
// do something
}
).catch(
(err) => {
// do something
}
);
cordova plugin add cordova-plugin-file
我的代码对我有用
getMedia(): Promise<any> {
return new Promise((resolve, reject) => {
Camera.getPicture(this.options).then((fileUri: any) => {
alert('File URI: ' + JSON.stringify(fileUri));
window.resolveLocalFileSystemURL('file://' + fileUri, (fileEntry) => {
alert('Type: ' + (typeof fileEntry));
fileEntry.file((file) => {
alert('File: ' + (typeof file) + ', ' + JSON.stringify(file));
const fileReader = new FileReader();
fileReader.onloadend = (result: any) => {
alert('File Reader Result: ' + JSON.stringify(result));
let arrayBuffer = result.target.result;
let blob = new Blob([new Uint8Array(arrayBuffer)], { type: 'video/mp4' });
const name = 'mypic'
this.upload(blob);
};
fileReader.onerror = (error: any) => {
reject(error);
};
fileReader.readAsArrayBuffer(file);
}, (error) => {
alert('File Entry Error: ' + JSON.stringify(error));
});
}, (error) => {
alert('Error resolving file: ' + JSON.stringify(error));
});
});
});
}
我有一些使用相机的打字稿代码:
this.camera.getPicture(this.optionsGetCamera).then((imageURI) => {
if (this.platform.is('ios')) {
this.crop.crop(imageURI, { quality: 100 }).then(newPath => {
console.log(newPath);
(window as any).resolveLocalFileSystemURL(newPath, function (fileEntry) {
this.readFile(fileEntry);
});
}).catch((error) => { ...
当我 运行 应用程序并使用此代码中使用的相机功能时,我在控制台中收到错误消息(我 运行 在使用 -lc 的设备上查看日志的参数):
console.error: ERROR ->
{"line":58535,"column":81,"sourceURL":"http://192.168.1.131:8100/build/main.js","__zone_symbol__currentTask":{"type":"microTask","state":"notScheduled","source":"Promise.then","zone":"angular","cancelFn":null,"runCount":0}}
line 58535
是这样的:
window.resolveLocalFileSystemURL(newPath, function (fileEntry) {
此行位于 ionic 在构建时创建的 main.js 文件中。我一直在试图理解 "source":"Promise.then"
,因为它似乎可能指向问题(有承诺?还是没有使用?)。谢谢。
使用来自 ionic native 的 File class The Typescript class 不要使用 javascript any 类型 参考 https://ionicframework.com/docs/native/file/
import {Component} from '@angular/core';
import {File} from 'ionic-native';
...
File.listDir(cordova.file.applicationDirectory,
'mySubFolder/mySubSubFolder').then(
(files) => {
// do something
}
).catch(
(err) => {
// do something
}
);
cordova plugin add cordova-plugin-file
我的代码对我有用
getMedia(): Promise<any> {
return new Promise((resolve, reject) => {
Camera.getPicture(this.options).then((fileUri: any) => {
alert('File URI: ' + JSON.stringify(fileUri));
window.resolveLocalFileSystemURL('file://' + fileUri, (fileEntry) => {
alert('Type: ' + (typeof fileEntry));
fileEntry.file((file) => {
alert('File: ' + (typeof file) + ', ' + JSON.stringify(file));
const fileReader = new FileReader();
fileReader.onloadend = (result: any) => {
alert('File Reader Result: ' + JSON.stringify(result));
let arrayBuffer = result.target.result;
let blob = new Blob([new Uint8Array(arrayBuffer)], { type: 'video/mp4' });
const name = 'mypic'
this.upload(blob);
};
fileReader.onerror = (error: any) => {
reject(error);
};
fileReader.readAsArrayBuffer(file);
}, (error) => {
alert('File Entry Error: ' + JSON.stringify(error));
});
}, (error) => {
alert('Error resolving file: ' + JSON.stringify(error));
});
});
});
}