Как я могу переместить файл с / private / в tmp uri - PullRequest
0 голосов
/ 04 мая 2020

У меня есть и ioni c 4 Приложение, которое может делать снимки и сохранять в приложении для последующей загрузки, когда улучшится сотовая связь. Я успешно справился с фотографиями и сейчас пытаюсь сделать это с файлами на устройстве iOS. Я использую плагин IOSFilePicker, чтобы получить URI-ссылку для копирования файла в папку TMP, а затем скопировать его в каталог. Это не с файлами. Я думаю, что это как-то связано с private в uri

copyFileToLocalDir namePath /private/var/mobile/Containers/Data/Application/49F98F61-0CD7-4F13-A8AB-F9068B1D924B/tmp/com.complyworksmobile.app -Входящие /

журналы с успешным сохранением фотографии

createFileName newFileName UUID_a612e7a5-6660-4c2e-901d-3e5be0715eec_questionid_UUID16_time_1588602250030.jpg

файл / имя_файла Контейнеры / данные / приложения / 49F98F61-0CD7-4F13-A8AB-F9068B1D924B / TMP /

copyFileToLocalDir currentName cdv_photo_001.jpg

copyFileToLocalDir newFileName UUID_a612e7a5-6660-4c2e-901D-3e5be0715eec_questionid_UUID16_time_1588602250030.jpg copyFileToLocalDir newFileName UUID_a612e7a5-6660-4c2e-901d-3e5be0715eec_questionid_UUID16_time_1588602250030.jpg

Журнал сбоев

getFile currentName photo2.jpg

личный / переменный / контейнер / getFile правильные данные Применение / 49F98F61-0CD7-4F13-A8AB-F9068B1D92 4B / tmp / com.complyworksmobile.app-Inbox /

createFileNameAlt newFileName UUID_a612e7a5-6660-4c2e-901d-3e5be0715eec_questionid_UUID16_time_1588602196747 * / local / имя_пакета 49F98F61-0CD7-4F13-A8AB-F9068B1D924B / tmp / com.complyworksmobile.app-Inbox /

copyFileToLocalDir currentName photo2.jpg

copyFileToLocalDir newFileName *

err {"code": 5, "message": "ENCODING_ERR"}

Единственное реальное различие, которое я вижу, это имя namePath / private / в нем. оба файла .jpg фотографии. Есть ли способ обойти это / личное /, если это проблема.

Мой код выглядит следующим образом

ts.

getFile() {
  this.filePicker.pickFile()
  .then((uri) => {
    console.log('uri', uri);
    var currentName = uri.substr(uri.lastIndexOf('/') + 1);
    var correctPath = uri.substr(0, uri.lastIndexOf('/') + 1);
    console.log("getFile currentName ", currentName);
    console.log("getFile correctPath ", correctPath);
    this.copyFileToLocalDir(correctPath, currentName, this.createFileNameAlt());
  }
  )
  .catch(err => console.log('Error', err));
}

createFileName() {
  var d = new Date(),
  n = d.getTime(),
  f = this.formID,
  q = this.sectionUUID,
  newFileName = "UUID" + "_" + f + "_" + "questionid_" + q + "_" + "time_" + n + ".jpg";
  console.log("createFileName newFileName ", newFileName);
  return newFileName;
}

createFileNameAlt() {
  var d = new Date(),
  n = d.getTime(),
  f = this.formID,
  q = this.sectionUUID,
  newFileName = "UUID" + "_" + f + "_" + "questionid_" + q + "_" + "time_" + n;
  console.log("createFileNameAlt  newFileName", newFileName);
  return newFileName;
}

copyFileToLocalDir(namePath, currentName, newFileName) {
  console.log("copyFileToLocalDir namePath", namePath);
  console.log("copyFileToLocalDir currentName", currentName);
  console.log("copyFileToLocalDir newFileName", newFileName);

  this.file.copyFile(namePath, currentName, this.file.dataDirectory, newFileName).then(success => {
    this.updateStoredImages(newFileName);
    console.log("copyFileToLocalDir newFileName ", newFileName);
  }, error => {
    let err = JSON.stringify(error);
    console.log("err", err);
    this.presentToast('Error while storing file.');
  });
} 

1 Ответ

0 голосов
/ 05 мая 2020

Оказывается / private / это проблема. То, что в итоге закончилось, было отрезано от / private / и добавлено file: //, а затем все заработало

Ниже приведен мой отредактированный getFile ()

getFile() {
  this.filePicker.pickFile()
  .then((uri) => {
    console.log('uri', uri);
    var currentName = uri.substr(uri.lastIndexOf('/') + 1);
    var correctPath = uri.substr(0, uri.lastIndexOf('/') + 1);
    let newName = correctPath.slice(8);
    let AmendLink = "file://" + newName;
    this.copyFileToLocalDir(AmendLink, currentName, this.createFileNameAlt());
  }
  )
  .catch(err => console.log('Error', err));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...