Скопируйте файл в путь с помощью приложения Cordova Hybrid - PullRequest
0 голосов
/ 05 октября 2018

Контекст : я разрабатываю гибридное приложение с Cordova 6 и SAPUI5 Framework (сейчас нужно беспокоиться только об Android).

Что я хочу : Копировать/ быстро переместить файл в путь.Возможно получение FileEntry из объекта File / Blob из FileUploader на sapui5.

Ввод : FileUploader

Вывод : объект файла. Таким образом, я получаю файл, когда выбираю его, выполняя следующие действия:

sap.ui.getCore().byId('file-uploader-id').oFileUpload.files[0];

Итак, я должен скопировать его в другое место: " cordova.file .externalCacheDirectory».Но FileUploader не предоставляет значение полного пути для выбранного элемента ( по соображениям безопасности ).

Что я пробовал :

        var sPath = URL.createObjectURL(oFile);
        var pCopyFrom = new Promise((resolve, reject) => {
            window.resolveLocalFileSystemURL(sPath, resolve, reject);
        });

        var pCopyTo = new Promise((resolve, reject) => {
            var sExternalCachePath = cordova.file.externalCacheDirectory;
            window.resolveLocalFileSystemURL(sMediaPath, resolve, reject);
        });

        Promise.all([pCopyFrom, pCopyTo]).then(aValues => {
            aValues[0].moveTo(aValues[1], aValues[0].name, cbSuccess, cbError);
        });

Результат :

Решение, похоже, не работает, поскольку сгенерированный путь недоступен (код ошибки 5), этот путь недопустим для его использования.

Возможные решения :

  • Извлечь путь файлового объекта другим способом.
  • Использовать другой вход, который может предоставить этот путь (до сих пор я не делалнайти любой).
  • Найти путь к файлу, используя имя файла или, возможно, размер или что-то рекурсивное в телефоне.

Какое текущее решение (Но на самом делемедленно) :

Записать файл с помощью FileWritter .Если у меня есть путь и я использую приведенный выше код для видео (продолжительностью 5 секунд), он тратит менее 1 секунды (благодаря FileEntry ) для его копирования / перемещения (используя захват камеры или видео с cordova-plugin-media-capture , который дает путь к файлу), при использовании метода FileWritter он тратит как 10 секунд чтобы написать.

Спасибо, что прочитали.Я буду загружать любые новые, как у меня есть.

1 Ответ

0 голосов
/ 15 октября 2018

Окончательное решение - это второй вариант, который я сказал в вопросе, с изменением метода ввода:

Вместо использования FileUploader в качестве ввода используйте плагин под названием FileСелектор .

Вы можете получить FileName, URI , MIME-тип и расширение файла

Так что теперь я могу быстрее перемещать / копировать файл с помощью FileEntry .

В любом случае я обновлю этот ответ, если найду что-то подходящее для этой темы.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...