File io Cordova/Phonegap Blackberry文件传输下载

File io Cordova/Phonegap Blackberry文件传输下载,file-io,blackberry,cordova,File Io,Blackberry,Cordova,我想知道如何在黑莓iOS版和安卓版的phonegap应用程序中下载图像并显示出来,我已经做到了。作为一个测试,我使用下面的附件 如果我在playbook上使用它运行示例,sims将在没有任何错误的情况下运行,WebInspector中会报告非示例,但不会显示图像。尽管文件传输已成功且报告的entry.fullPath为 file:///accounts/1000/appdata/....../data//doubt.jpg 访问此路径上的文件时出现问题。查看网络选项卡WebInspector中显

我想知道如何在黑莓iOS版和安卓版的phonegap应用程序中下载图像并显示出来,我已经做到了。作为一个测试,我使用下面的附件

如果我在playbook上使用它运行示例,sims将在没有任何错误的情况下运行,WebInspector中会报告非示例,但不会显示图像。尽管文件传输已成功且报告的entry.fullPath为 file:///accounts/1000/appdata/....../data//doubt.jpg 访问此路径上的文件时出现问题。查看网络选项卡WebInspector中显示的请求 在本地映像路径上请求的文件大小仅为15B。看起来这是我们调用fileSystem.root.getFile时创建的空文件,而不是从服务器传输时应该保存在此路径中的文件

几天来,我一直在努力解决这个问题,没有成功,只有挫折。我找到了使用blackberry.io.home的blackberry.io.sharedFolder声明文件应保存的路径的建议,但尽管我有blackberry对象,blackberry.io.sharedFolder和home未定义

我还使用NDK方法在Blackberry z10上尝试了相同的示例,但在本例中,entry.fullPath是local:///persistent/.. 但随后无法从此路径访问该文件。报告GET错误。在这种情况下,也没有blackberry对象可用

所以我认为基本的问题是应该为文件下载设置什么本地路径,这样文件就可以通过URI访问

<!DOCTYPE HTML>
<html>
<head>
    <meta name = "viewport" content = "user-scalable=no,width=device-width" />
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Test Page</title>
    <style type="text/css">
        * {
            -webkit-tap-highlight-color: rgba(0, 0, 0, 0);  
        }
    </style>
  <script src="cordova/cordova.BBplaybook.js"></script>  
  <script type="text/javascript" charset="utf-8">       
    function init(){
        document.addEventListener("deviceready", ready, true);     
    }

    function ready() {

    }

    function download() {
      console.log("calling download");
    //    // blackberry.io.sandbox = false;
    // console.log("blackberry.io.sharedFolder");
    //   console.log(blackberry.io.sharedFolder);
    //   console.log("blackberry");
    //   console.log(blackberry);

        var remoteFile = "http://i3.kym-cdn.com/entries/icons/original/000/000/080/doubt.jpg";
        var localFileName = remoteFile.substring(remoteFile.lastIndexOf('/')+1);
        console.log("localFileName");
      console.log(localFileName);

        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) {

            fileSystem.root.getFile(localFileName, {create: true, exclusive: false}, function(fileEntry) {
                var localPath = fileEntry.fullPath;
                console.log("localPath");
                console.log(localPath);

                if (device.platform === "Android" && localPath.indexOf("file://") === 0) {
                    localPath = localPath.substring(7);
                }
                var ft = new FileTransfer();
                ft.download(remoteFile,
                    localPath, function(entry) {
                        var dwnldImg = document.getElementById("dwnldImg");
                        dwnldImg.src = entry.fullPath;
                        console.log("entry.fullPath;");
                         console.log(entry.fullPath);
                        dwnldImg.style.visibility = "visible";
                        dwnldImg.style.display = "block";
                    }, fail);
            }, fail);


        }, fail);
    }

    function fail(error) {
      console.log("error");
      console.log(error);
        console.log(error.code);
    }
  </script>
</head>

<body onload="init();">
    <button onclick="download()" >Download and display image</button>
    <img src="" id="dwnldImg" style="display: none"/>
</body>
</html>
在config.xml中,我有

<access subdomains="true" uri="*" />
<feature id="blackberry.io.file" required="true" version="1.0.0.0" />
<feature id="blackberry.utils" required="true" version="1.0.0.0" />
<feature id="blackberry.io.dir" required="true" version="1.0.0.0" />

<rim:permit>access_shared</rim:permit>
和plugins.xml

<plugin name="File" value="org.apache.cordova.file.FileManager"/>
<plugin name="FileTransfer" value="org.apache.cordova.http.FileTransfer"/>

在BB10上的纯WebWorks中做了一个类似的例子之后,我相信上面的cordova例子中使用的本地路径没有任何错误。问题一定出在文件传输上。wideblue,你用过这个吗?@MattGrande我放弃了,用纯WebWorks代替phone gap制作BB10。港口很容易。