Используя Cordova/PhoneGap 3.3.0, я загружаю файл с помощью плагина FileTransfer, а затем пытаюсь открыть его с помощью плагина InAppBrowser. Я могу загрузить файл успешно и поместить его в каталог temp. Поскольку плагин File теперь использует схему URL, я не могу понять, как передать правильный URL-адрес методу window.open
плагина InAppBrowser. Я также не могу найти соответствующую документацию. Вся документация "загрузить и открыть", которую я могу найти, устарела и пред-URL-схема.
Соответствующие ссылки:
- Информация о выпуске Cordova о новых версиях плагина
- Чтение плагина FileTransfer
- Чтение плагина InAppBrowser
- Как открыть локальный файл с помощью InAppBrowser с последними изменениями схемы URL в плагине файлов - Подобный вопрос
Устаревшие примеры я нашел:
- Проблема с файловой загрузкой файла на Cordova 3.1 - этот пользователь понизил до более ранней версии, потому что не мог понять это.
- https://gist.github.com/devgeeks/4982983 - В этом примере используется
entry.fullPath
, который теперь устарел в пользуtoURL()
Вот мой код:
var uri = encodeURI("http://some.url/file.pdf");
window.requestFileSystem(LocalFileSystem.TEMPORARY, 0,
function (fileSystem) {
var fileTransfer = new FileTransfer();
var filename = fileSystem.root.toURL() + uri.substr(uri.lastIndexOf("/") + 1);
fileTransfer.download(uri, filename,
function(entry) { // download success
var path = entry.toURL(); //**THIS IS WHAT I NEED**
window.open(path, "_system");
},
function(error) {} // irrelevant download error
);
},
function(error) {} // irrelevant request fileSystem error
);
В настоящее время я тестирую Android на Nexus 7 и Nexus 5. InAppBrowser корректно открывает стандартный PDF-пуск (в моем случае Adobe Reader), но затем я получаю ошибку "Недопустимый путь к документу".
[Обновить: отображение возвращаемых значений]
Я пробовал все следующие комбинации для пути к файлу:
var path = entry.toURL(); // "cdvfile://localhost/temporary/file.pdf"
var path = entry.fullPath; // "file.pdf"
var path = fileSystem.root.toURL() + filename; // "cdvfile://localhost/temporary/file.pdf"
var path = fileSystem.root.fullPath + filename; // "/file.pdf"