在Phonegap iOS应用程序中查看/下载文件

时间:2012-02-23 09:50:05

标签: ios cordova mobile-safari download

我正在构建iOS phonegap(v 1.3)应用。在页面上,我给了一个按钮来下载.pptx文件。

<a href="'+downloadUrl+'" target="_blank">Download file</a>

按钮的href指向我网站上的下载链接。因此,点击链接应自动下载文件 发生的事情是,点击链接后,文件会被下载,但它会在同一视图中打开。 pptx的所有幻灯片都在另一个下方,它们占据全屏。除了杀死我的应用程序并重新启动之外,无法返回我的应用程序。我尝试了target =“_ blank”,“_ tab”,没有任何效果,一切都会导致屏幕上的幻灯片出现类似行为,我无法回到我的应用程序。

我可以做一些事情,以便.pptx文件在另一个视图中打开,或者更好,不打开,只是保存(如在android中)?请帮助。

2 个答案:

答案 0 :(得分:2)

我想你可以看看这个插件

PhoneGap plugin for downloading URL

答案 1 :(得分:1)

要下载和显示文件,请按照示例代码操作。

在index.html

中的</head>标记上方添加指定代码
<script type="text/javascript" charset="utf-8">
        // Wait for Cordova to load
  document.addEventListener("deviceready", onDeviceReady, false);
  // Cordova is ready
  function onDeviceReady() {
      alert("Going to start download");
      downloadFile();
  }

    function downloadFile(){
        window.requestFileSystem(
                                 LocalFileSystem.PERSISTENT, 0,
                                 function onFileSystemSuccess(fileSystem) {
                                 fileSystem.root.getFile(
                                                         "dummy.html", {create: true, exclusive: false},
                                                         function gotFileEntry(fileEntry){
                                                         var sPath = fileEntry.fullPath.replace("dummy.html","");
                                                         var fileTransfer = new FileTransfer();
                                                         fileEntry.remove();
                                                         fileTransfer.download(
                                                                               "http://www.w3.org/2011/web-apps-ws/papers/Nitobi.pdf",
                                                                               sPath + "theFile.pdf",
                                                                               function(theFile) {
                                                                               console.log("download complete: " + theFile.toURI());
                                                                               showLink(theFile.toURI());
                                                                               },
                                                                               function(error) {
                                                                               console.log("download error source " + error.source);
                                                                               console.log("download error target " + error.target);
                                                                               console.log("upload error code: " + error.code);
                                                                               }
                                                                               );
                                                         },
                                                         fail);
                                 },
                                 fail);
    }
    function showLink(url){
        alert(url);
        var divEl = document.getElementById("deviceready");
        var aElem = document.createElement("a");
        aElem.setAttribute("target", "_blank");
        aElem.setAttribute("href", url);
        aElem.appendChild(document.createTextNode("Ready! Click To Open."))
        divEl.appendChild(aElem);
    }
    function fail(evt) {
        console.log(evt.target.error.code);
    }

    </script>

参考: - Blog Post