给定一个路径,我如何实际获取一个文件,然后使用 Cordova 文件 API 读取 AsDataUrl?
Given a path, How do i actually get a file and then readAsDataUrl using Cordova File API?
我完全迷路了。按照这个例子,我不知道我是应该传递一个路径还是某个文件对象?
var reader = new FileReader();
reader.onloadend = function(e){
alert(e.target.result);
};
reader.readAsDataURL(file);
"file" 应该是什么?如果它是某种类型的对象,有人可以告诉我如何创建一个给定文件路径的对象吗?我正在尝试使用此 https://github.com/mbppower/CordovaCameraPreview 拍照,然后上传结果。当我拍照时,系统会返回文件的完整路径,该文件可用作图像元素的 src 并已确认有效。
如果您有路径,您可以使用 resolveLocalFileSystemURL
获取一个 FileEntry 对象,然后您可以复制或移动它。
您还可以通过以下方式访问 File 对象:
resolveLocalFileSystemURL('assets-library://asset/asset.JPG?id=711B4C9D-97D6-455A-BC43-C73059A5C3E8&ext=JPG', function(fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader(),
data = null;
reader.onloadend = function(event) {
data = reader.result;
};
console.log('Reading file: ' + file.name);
reader.readAsDataURL(file)
});
});
我意识到这是一个老问题,但我发现它很有帮助,所以如果其他人需要帮助,请按以下步骤(使用 Promises
):
鉴于您已经安装 cordova plugin add cordova-plugin-file
…
使用这个函数:
function filePathToDataUrl(filePath) {
return new Promise(function (resolve, reject) {
window.resolveLocalFileSystemURL(filePath, function (fileEntry) {
fileEntry.file(function (file) {
var reader = new window.FileReader();
reader.onloadend = function() {
resolve(reader.result);
};
reader.readAsDataURL(file);
}, function (fileEntryError) { reject('fileEntry.file error:' + JSON.stringify(fileEntryError, 0, 2)); });
}, function (resolveFSError) { reject('resolveLocalFileSystemURL error:' + JSON.stringify(resolveFSError, 0, 2)); });
});
}
现在您可以filePathToDataUrl(absFilePath).then(dataUrl => {…}).catch(console.error)
!
我完全迷路了。按照这个例子,我不知道我是应该传递一个路径还是某个文件对象?
var reader = new FileReader();
reader.onloadend = function(e){
alert(e.target.result);
};
reader.readAsDataURL(file);
"file" 应该是什么?如果它是某种类型的对象,有人可以告诉我如何创建一个给定文件路径的对象吗?我正在尝试使用此 https://github.com/mbppower/CordovaCameraPreview 拍照,然后上传结果。当我拍照时,系统会返回文件的完整路径,该文件可用作图像元素的 src 并已确认有效。
如果您有路径,您可以使用 resolveLocalFileSystemURL
获取一个 FileEntry 对象,然后您可以复制或移动它。
您还可以通过以下方式访问 File 对象:
resolveLocalFileSystemURL('assets-library://asset/asset.JPG?id=711B4C9D-97D6-455A-BC43-C73059A5C3E8&ext=JPG', function(fileEntry) {
fileEntry.file(function(file) {
var reader = new FileReader(),
data = null;
reader.onloadend = function(event) {
data = reader.result;
};
console.log('Reading file: ' + file.name);
reader.readAsDataURL(file)
});
});
我意识到这是一个老问题,但我发现它很有帮助,所以如果其他人需要帮助,请按以下步骤(使用 Promises
):
鉴于您已经安装 cordova plugin add cordova-plugin-file
…
使用这个函数:
function filePathToDataUrl(filePath) {
return new Promise(function (resolve, reject) {
window.resolveLocalFileSystemURL(filePath, function (fileEntry) {
fileEntry.file(function (file) {
var reader = new window.FileReader();
reader.onloadend = function() {
resolve(reader.result);
};
reader.readAsDataURL(file);
}, function (fileEntryError) { reject('fileEntry.file error:' + JSON.stringify(fileEntryError, 0, 2)); });
}, function (resolveFSError) { reject('resolveLocalFileSystemURL error:' + JSON.stringify(resolveFSError, 0, 2)); });
});
}
现在您可以filePathToDataUrl(absFilePath).then(dataUrl => {…}).catch(console.error)
!