我正在Ionic 3中编写一个简单的应用程序,用于提交带有少量附件的表格(来自相机的图片,来自画廊的图片和一部20年代的电影) . 表单提交到服务器后,表单处理和接收状态 . 状态通过应用程序获取以通知用户 . 提交的整个表单保存到SQLite中,以允许用户访问他的所有表单和附件(图片和电影) . 为此,我正在将图片和电影复制到Cordova文件插件中:

let imageData = await this.camera.getPicture(options);
let dir = imageData.split('/');
let fileName = dir[dir.length - 1];
dir.pop();
let fromDirectory = dir.join('/');
let toDirectory: string = this.file.syncedDataDirectory;
await this.file.copyFile(fromDirectory, fileName, toDirectory, fileName);

我的相机选项:

const options: CameraOptions = {
      quality: 50,
      destinationType: this.camera.DestinationType.FILE_URI,
      sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,
      mediaType: this.camera.MediaType.PICTURE,
      encodingType: this.camera.EncodingType.JPEG
    }

一切都在Android上工作但在iOS上我收到错误代码:12,PATH_EXISTS_ERR . 仅在图片时出现错误 . 我正在以与图片相同的方式复制电影:

await this.file.copyFile(fromDirectory, movieName, toDirectory, movieName)

在第一个会话中,我将从相机中添加一张图片,从图库中添加一张图片(相机胶卷),一切正常 . 当我尝试添加其他图片时,在新会话中会出现此问题 . 如果我在前一个会话中添加了两个图片,在第二个会话中我收到两次错误:PATH_EXISTS_ERR,第三种添加图片的方法是成功的 . 看起来在一个会话文件插件中正在写索引001,002等图片...但是在新的会话文件中,插件试图用索引001再次写一个新图片,但是这个路径已经存在 . 我找不到任何这个错误的复制,可能是我以错误的方式使用文件插件,但在Android上,一切都完美地与将文件复制到文件插件的方式相同(除了我将文件复制到文件插件之外) this.file.dataDirectory) . 如果我找不到解决方案,我可能会将图片转换为base64,然后将它们存储为字符串 . 我会非常感谢任何建议!