gpt4 book ai didi

android - PhoneGap - 尝试将文件复制到 dataDirectory 时出现错误代码 5,但为什么呢?

转载 作者:行者123 更新时间:2023-11-29 16:51:03 25 4
gpt4 key购买 nike

在我的应用程序中,用户可以从图库中选择一张图片,该图片将用于“用户详细信息”。因此,创建了一个屏幕,他存在一个名为"file"的输入文件。我需要将选择的图像复制到 externalDataDirectory。

我的问题是如何从选择的文件中获取 URI 以进行复制?

我的代码是...但是每次都得到错误代码9,但我不知道这是什么意思。

inputFile = $( '.file' ).val();

window.resolveLocalFileSystemURL( cordova.file.externalDataDirectory, function( myFileEntry ){


window.requestFileSystem( LocalFileSystem.PERSISTENT, 0, function(fileEntry){

parentEntry = new DirectoryEntry( inputFile );


myFileEntry.getDirectory( "TRETA", {create: true, exclusive: false}, function(dir){

// copy the file to a new directory and rename it
fileEntry.root.copyTo( dir, "arquivo", function(entry){
console.log("New Path: " + entry.fullPath);
}, function(error){
console.log(error);
});

}, fail);


}, function(error){
console.log( error );
});

}, fail);

呜呜呜

最佳答案

(注意:假设您要复制位于应用程序根文件夹中的文件。我们将其命名为 appURI)。

我只能为自己说话,但 LocalFileSystem.PERSISTENT 指向 file:///storage/emulated/0/ 我的 android 手机(测试环境) .使用此基本 URI,默认情况下您没有读/写权限,但在其子文件夹中。

您要访问的文件夹应如下所示:file:///storage/emulated/0/Android/data/YOUR_APP_NAMESPACE/ (appURI)

在这个文件夹中你有读/写权限。因此,您可以使用自己的逻辑自行获取此 url,也可以使用指向 file:///storage/emulated/0/Android/data/的 LocalFileSystem.TEMPORARY YOUR_APP_NAMESPACE/cache/ 与我的 android-phone 所以我想它应该与你相同。

但总的来说:

function getAppURI(callback) {
window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, function (filesystem) {
var cacheDir = filesystem.root.toURL();
var startPointCacheFolderName = cacheDir.match(/\/\w+\/$/) [0];
callback(cacheDir.replace(startPointCacheFolderName, '') + '/');
}, function (error) {
console.log('no access to app-filesystem');
}
);
}

最后我们可以使用正确的appURI:

getAppURI(function (appURI) {
window.resolveLocalFileSystemURL(appURI, function (fileSystem) {
fileSystem.getFile('fileToCopy.txt', {
create: false, // try true first to make sure that there are no other problems around
exclusive: false
}, function (fileEntry) {
window.resolveLocalFileSystemURL(appURI+"NAME_OF_A_SUBFOLDER_YOU_WANT_TO_COPY_TO OTHERWISE_REPLACE_THIS_STRING", function (newFileEntry) {
fileEntry.copyTo(newFileEntry, 'CopiedFile.txt', function (result) {
console.log("save successfully:", result);
}, function (err) {
console.log("err-fileEntry.copyTo: ",err);
});
}, function (err) {
console.log("err-window.resolveLocalFileSystemURL: ",err);
});
}, function (err) {
console.log("err-fileSystem.getFile: ",err);
});
}, function (err) {
console.log("err-resolveLocalFileSystemURL: ",err);
});
});

希望这对您有所帮助。


还值得一提的是,错误代码并不总是表明操作无法成功的真正原因。有了这个question还有一个读/写权限错误以及错误代码 (ENCODING_ERR 5) 是相同的(看看评论)。

关于android - PhoneGap - 尝试将文件复制到 dataDirectory 时出现错误代码 5,但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46438633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com