使用Cordova/PhoneGap 3.3.0,我使用FileTransfer插件下載文件,然後嘗試使用InAppBrowser插件打開它。 我可以成功下載文件,並將其放置在臨時目錄中。由於File插件現在使用URL架構,因此我無法弄清楚如何將正確的url /路徑傳遞給InAppBrowser插件的window.open
方法。我也找不到任何相關的文檔。我能找到的所有「下載和打開」文檔都是過時的,並且是URL-schema。Cordova/PhoneGap打開已下載的文件(InAppBrowser)
相關鏈接:
- Cordova Release info on New Plugin Versions
- The readme for the FileTransfer plugin
- The readme for the InAppBrowser plugin
- How to open local file with InAppBrowser with recent changes to URL scheme in File plugin - 類似的問題
已過期前的amples我發現:
- File-transfer download file issue on 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
);
我目前TE在Nexus 7和Nexus 5上使用Android。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"
如果您最近更新了插件,也許您必須處理新的URL方案'cdvfile://'? http://cordova.apache.org/news/2014/02/10/plugins-release.html – QuickFix
感謝您的評論。我正在使用這些最新的插件,在您提供的鏈接中引用。我讀了這個,但不記得我發佈的URL。我將它添加到相關鏈接部分。當我調用'entry.toURL()'我得到'cdvfile://'前綴的鏈接 – chadiusvt
愚蠢的問題:爲什麼不直接使用window.open而不是先下載它的原始URL? – QuickFix