【发布时间】:2019-05-15 09:59:02
【问题描述】:
我正在尝试使用 cordova-plugin-file 保存文件。 该脚本似乎可以工作,但我无法在设备和 cdv 上找到该文件:引用似乎无法解析。
export const SaveFile = function(fFile, sFileName) {
return new Promise((resolve, reject) => {
console.log("requestFilesystem", fFile);
window.requestFileSystem(
LocalFileSystem.PERSISTENT,
fFile.size,
function(fs) {
console.log("got fs", fs);
fs.root.getFile(
sFileName,
{ create: true, exclusive: false },
function(fileEntry) {
console.log("got fileentry", fileEntry);
fileEntry.createWriter(function(fileWriter) {
fileWriter.onwriteend = (eEvent) => {
console.log(
`${ fileWriter.localURL } saved`,
`${ fFile.size }kb`
);
resolve(fileWriter);
};
fileWriter.onerror = (eError) => {
console.error('onErrorCreateWriter', JSON.stringify(eError));
reject(eError);
};
fileWriter.write(fFile);
});
},
(eError) => {
console.error('onErrorCreateFile', eError);
reject(eError);
}
);
},
(eError) => {
console.error('onErrorLoadFs', eError.message);
reject(eErroreError.message);
}
);
});
};
我在日志中得到以下信息:
SaveFile.js:3 requestFilesystem Blob {size: 1707639, type: "video/webm"}
SaveFile.js:8 got fs FileSystem {name: "persistent", root: DirectoryEntry}
SaveFile.js:13 got fileentry FileEntry {isFile: true, isDirectory: false, name: "1eb4d914-3d81-a313-7744-bea86b90f042.mp4", fullPath: "/1eb4d914-3d81-a313-7744-bea86b90f042.mp4", filesystem: FileSystem, …}
SaveFile.js:16 cdvfile://localhost/persistent/1eb4d914-3d81-a313-7744-bea86b90f042.mp4 saved 1707639kb
所以它保存对了吗?但我没有看到 fs 和 cdvfile 上的视频:视频标签中的 ref 坏了。
试图在组件中消费文件的视频标签只是:
<video controls="" src="cdvfile://localhost/persistent/1eb4d914-3d81-a313-7744-bea86b90f042.mp4"></video>
【问题讨论】:
-
你编译你的代码吗?我不认为 export const SaveFile 在 ES5 中工作......
-
(评论转发)我用 babel/webpack 编译
-
@Eric 知道文件可能发生了什么吗?
-
显示您的代码在保存后如何加载文件
-
我把它加到post里了,只是一个video标签,url字符串从promise出来redux然后作为prop传入另一个组件
标签: javascript android cordova html5-filesystem cordova-plugin-file