Ios copyTo给出错误代码1

Ios copyTo给出错误代码1,ios,cordova,Ios,Cordova,我很难找到我犯的错误。我想,我在代码中得到了正确的条目和路径,但它仍然会进入addFileToDirectory函数中的movingError 以下是我遇到问题的代码: function addToFileSystem(entry){ window.resolveLocalFileSystemURL(entry, onPhotoURISuccess, movingError); } function onPhotoURISuccess(entry){ console.log('1.1'

我很难找到我犯的错误。我想,我在代码中得到了正确的条目和路径,但它仍然会进入addFileToDirectory函数中的movingError

以下是我遇到问题的代码:

function addToFileSystem(entry){
  window.resolveLocalFileSystemURL(entry, onPhotoURISuccess, movingError);
}

function onPhotoURISuccess(entry){
  console.log('1.1');
  fileEntry = entry
  window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, createOrSelectDirectory, movingError);
  console.log('1.2');
}

function createOrSelectDirectory(fileSys){
  console.log('2.1');
  var myFolderName = 'photos';
  fileSys.root.getDirectory(myFolderName, {create:true}, addFileToDirectory, movingError);
  console.log('2.2');
}

function addFileToDirectory(directory){
  console.log('3.1');
  var date = new Date();
  var fileName = date.getTime();
  var newFileName = fileName + '.jpg';
  console.log('newFileName:' + newFileName + ', directory: ' + directory.toURL() + ', fileEntry: ' + fileEntry.toURL());
  fileEntry.copyTo(directory, newFileName, OnMoveSuccess, movingError);
  console.log('3.2');
}

function OnMoveSuccess(fileEntry){
  console.log(fileEntry.toURL() + ' moved successfully');
}

function movingError(error) {
  console.log('error occoured while moving file with error code: ' + error.code);
}
控制台中的输出:

2014-04-03 09:33:29.678 HelloWorld[274:60b] 1.1
2014-04-03 09:33:29.683 HelloWorld[274:60b] 1.2
2014-04-03 09:33:29.685 HelloWorld[274:60b] 2.1
2014-04-03 09:33:29.693 HelloWorld[274:60b] 2.2
2014-04-03 09:33:29.694 HelloWorld[274:60b] 3.1
2014-04-03 09:33:29.695 HelloWorld[274:60b] newFileName:1396510409691.jpg, directory: cdvfile://localhost/persistent/photos/, fileEntry: cdvfile://localhost/temporary/cdv_photo_014.jpg
2014-04-03 09:33:29.699 HelloWorld[274:60b] 3.2
2014-04-03 09:33:29.700 HelloWorld[274:60b] error occoured while moving file with error code: 1
我确实尝试删除了一些movingError,以检查调用它的位置,以及它在fileEntry.copyTo中的位置

我也安装了文件插件


顺便说一句,这是针对IOS的。

我稍微重写了您的代码。在我们开始之前,并不是说您希望相机使用本机的URI,而不是文件的URI:

navigator.camera.getPicture(onCamSuccess, onCamFail, 
{quality:50, 
sourceType:Camera.PictureSourceType.PHOTOLIBRARY,
destinationType:Camera.DestinationType.NATIVE_URI});
好的,在继续之前,请注意我对这段代码不满意,因为每次你拍照,它都会得到一个文件系统的钩子,然后是你想要的文件夹。这应该做一次,而不是每次

function onCamSuccess(imgdata) {
    console.log(imgdata);
    $("#entryPicture").val(imgdata);
    $("#imgPreview").attr("src", imgdata);
    //copy the image to global scope
    imageUri = imgdata;
    window.requestFileSystem(window.PERSISTENT, 0, gotFS, onError);
}
现在让我们看一下gotFS

function gotFS(fs){
    var myFolderName = 'photos';
    //copy file system to global scope
    fileSys = fs;
    fileSys.root.getDirectory(myFolderName, {create:true}, addFileToDirectory, onError);
}
然后让我们看看addFileToDirectory

function addFileToDirectory(directory){
    var date = new Date();
    var fileName = date.getTime();
    var newFileName = fileName + '.jpg';

    window.resolveLocalFileSystemURL(imageUri, function(fe) {
        fe.copyTo(directory, newFileName, function(e) {
            console.log('in theory, done');
        }, onError);
    },onError);
}

就这样。这对我有用。正如我所说,我认为可以做得更好。

navigator.camera.getPicture(oncamsucture,onCamFail,{quality:50,sourceType:camera.PictureSourceType.PHOTOLIBRARY,destinationType:camera.destinationType.NATIVE_URI});这似乎对我不起作用。我正在用相机拍照,然后将临时文件保存到一个持久的位置,但第一件事是NATIVE_URI根本不返回任何内容,另一件事是我使用相机转发拍摄的照片。也许这不是解决问题的方法?你使用的是最新版本吗?本机URI本身并不是新的,但可以肯定的是。另外,这里有一个链接到我的完整文件。我很确定我用的是最新的版本。还有一件事我可能不太清楚,那就是我使用ipad和这个应用程序,当我想抓取文件URI(NATIVE_URI/file_URI)时,我想在拍照时抓取。当我尝试使用你的代码时,它会打开一个菜单,在那里我可以从相机卷中选择一张图片,图片不存在也不应该存在。因此,在你最后的感觉中,源值可以调整,并且与此讨论无关(我相信!),因此如果你将其设置回原处,那也没什么大不了的。但是为什么你说你想使用文件URI呢?为什么不使用NATIUVE_URI?关于源代码,我也是这么想的。我真的很想使用原生URI,但当我使用它时,它是空的。这就是为什么到目前为止我只从文件URI中获取数据。只要我更改FILE_URI->NATIVE_URI,就会调用fail函数而不是success。其他的一切似乎都起作用了,但当我改变这个单一的值时,一切都不起作用了。