cordova-plugin-file 无法将文件从图库复制到 cordova.file.dataDirectory
cordova-plugin-file can't copy file from gallery to cordova.file.dataDirectory
我正在尝试将摄像机中的视频记录保存到 cordova.file.dataDirectory
,但是当我尝试从图库中复制新创建的文件时,我收到 NOT_FOUND_ERR
。
我正在使用 cordova-plugin-media-capture
录制视频,然后保存到用户的图库中。但是当我使用 window.resolveLocalFileSystemURL
获得 FileEntry
并尝试使用 entry.copyTo()
时,会抛出 NOT_FOUND_ERR
错误。
我的代码的精简/混乱版本如下:
// Capture Video
navigator.device.capture.captureVideo(onCaptureSuccess, onError, { limit: 1 });
onCaptureSuccess(mediaFiles: any[]) {
// Get video Path
let videoPath = mediaFiles[0].fullPath;
// Get the actual video file
window.resolveLocalFileSystemURL(videoPath, entry => {
// Get the cordova.file.dataDirectory directory entry
window.resolveLocalFileSystemURL(cordova.file.dataDirectory, directoryEntry => {
// Get / Create the 'videos' directory
directoryEntry.getDirectory('videos', { create: true }, videoDirectoryEntry => {
// Copy video file (entry) to 'videos' directory
entry.copyTo(videoDirectoryEntry, 'copiedVideo', copiedEntry => {
// I should now have a file entry of the copied video, but I don't. I get an error.
console.log(copiedEntry);
}, err => {
console.error(err); // This is where I capture the NOT_FOUND_ERR error
});
}, onError);
}, onError);
});
}
onError(error: Error) {
console.error(error.message)
}
知道为什么文件没有被复制吗?我是否需要请求特定权限才能写入 cordova.file.dataDirectory
?
经过反复试验,我发现我需要为 Android.
请求 READ_EXTERNAL_STORAGE
和 WRITE_EXTERNAL_STORAGE
权限
以后我会检查 iOS 是否需要任何权限,但现在我很高兴它适用于 Android。
我正在尝试将摄像机中的视频记录保存到 cordova.file.dataDirectory
,但是当我尝试从图库中复制新创建的文件时,我收到 NOT_FOUND_ERR
。
我正在使用 cordova-plugin-media-capture
录制视频,然后保存到用户的图库中。但是当我使用 window.resolveLocalFileSystemURL
获得 FileEntry
并尝试使用 entry.copyTo()
时,会抛出 NOT_FOUND_ERR
错误。
我的代码的精简/混乱版本如下:
// Capture Video
navigator.device.capture.captureVideo(onCaptureSuccess, onError, { limit: 1 });
onCaptureSuccess(mediaFiles: any[]) {
// Get video Path
let videoPath = mediaFiles[0].fullPath;
// Get the actual video file
window.resolveLocalFileSystemURL(videoPath, entry => {
// Get the cordova.file.dataDirectory directory entry
window.resolveLocalFileSystemURL(cordova.file.dataDirectory, directoryEntry => {
// Get / Create the 'videos' directory
directoryEntry.getDirectory('videos', { create: true }, videoDirectoryEntry => {
// Copy video file (entry) to 'videos' directory
entry.copyTo(videoDirectoryEntry, 'copiedVideo', copiedEntry => {
// I should now have a file entry of the copied video, but I don't. I get an error.
console.log(copiedEntry);
}, err => {
console.error(err); // This is where I capture the NOT_FOUND_ERR error
});
}, onError);
}, onError);
});
}
onError(error: Error) {
console.error(error.message)
}
知道为什么文件没有被复制吗?我是否需要请求特定权限才能写入 cordova.file.dataDirectory
?
经过反复试验,我发现我需要为 Android.
请求READ_EXTERNAL_STORAGE
和 WRITE_EXTERNAL_STORAGE
权限
以后我会检查 iOS 是否需要任何权限,但现在我很高兴它适用于 Android。