Phonegap文件传输下载Ripple/Chrome

7
我正在使用jquerymobile/phonegap/cordova(2.0)开发一个移动应用程序。我尝试从流(xml)中下载一些文件并将它们存储在本地。这种行为只出现在我用于调试的chrome浏览器中 (使用ripple进行模拟)。
如何启动chrome?以下是步骤:
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --disable-web-security --allow-file-access-from-files --allow-file-access
我正在Mac上进行开发,我的plist文件也有一个*访问权限,并且我在我的config.xml中添加了。
我尝试使用以下代码下载一些图片:
function downloadImage(url,filename,use){
if(use==="thumb") {
    filename = filename + ".png";
    download(url, filename);
}return filename; }

function download(url, filename) {

//writeLog(window.appRootDir.fullPath);
ft = new FileTransfer();
ft.download(
    url,
    window.appRootDir.fullPath + "/" + filename,
    {},
    {});
}

在模拟器上工作正常,但在chrome浏览器中出现以下错误:
TypeError
ripple.js:477
TypeError: Cannot call method 'download' of undefined
at n.exports.exec (chrome-extension://geelfhphabnejjhdalkjhgipohgpdnoc/ripple.js:477:26724)
at FileTransfer.download (http://localhost/~binderf/www/a4/cordova-2.2.0.js:2753:5)
at download (http://localhost/~binderf/www/a4/js/index.js:194:5)
at downloadImage (http://localhost/~binderf/www/a4/js/index.js:182:9)
at Element.<anonymous> (http://localhost/~binderf/www/a4/js/index.js:153:51)
at Function.p.extend.each (http://localhost/~binderf/www/a4/js/jquery-1.8.2.min.js:2:14477)
at p.fn.p.each (http://localhost/~binderf/www/a4/js/jquery-1.8.2.min.js:2:11151)
at Element.<anonymous> (http://localhost/~binderf/www/a4/js/index.js:145:57)
at Function.p.extend.each (http://localhost/~binderf/www/a4/js/jquery-1.8.2.min.js:2:14477)
at p.fn.p.each (http://localhost/~binderf/www/a4/js/jquery-1.8.2.min.js:2:11151) ripple.js:477
FileTransfer 

FileTransfer ripple.js:483
download ripple.js:483
missing exec:FileTransfer.download

一个对话框弹出,显示以下信息:

FileTransfer.download

我们好像缺少一些东西 :(

但比较酷的是,你可以填写文本区域,将 JSON 对象传递给你想要执行的回调函数。

我看到它是未定义的,但我无法确定我的问题究竟是什么。如果有人有猜测或类似的问题,请提供任何建议。

1个回答

10

这是因为Chrome的Ripple插件没有实现此功能。它将在实际环境中(例如手机)工作。


1
你不能使用插件。如果你想与操作系统交互,你需要使用真实设备。(iOS模拟器工作得非常好) - Christian Kuetbach
1
@ChristianKuetbach 是的。但他使用Chrome浏览器的Ripple插件,该插件试图在浏览器窗口中模拟真实设备。 - krtek
1
我知道,但关键是“试图模拟真实设备”。这个模拟器永远不会与自定义插件一起工作。我认为Chrome浏览器必须以降低的安全策略启动才能使用文件系统。我放弃使用模拟器(除了iOS模拟器),它们隐藏了真正的问题并显示仅限于模拟器的问题。 - Christian Kuetbach
2
非常感谢您的回答,我有点困惑...但是这还没有被实现是有道理的。是的,在真实环境中(也在模拟器上)它对我来说运行得很好,只是为了调试方便... :)所以我继续使用Xcode和模拟器...你们中有人有代码边缘的经验吗?我仍然不满意工作流程...所以我尝试找出最有效的设计/开发/调试方式。 - user1921446
我们通过在代码中添加一个布尔常量RIPPLE来解决这个问题。当设置为true时,我们跳过FileTransfer代码。虽然不是理想的解决方案,但在我们的情况下它起作用了。 - krtek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接