【问题标题】:WebOS : how to test if a file exists?WebOS:如何测试文件是否存在?
【发布时间】:2011-05-02 10:09:16
【问题描述】:

在继续使用下载管理器服务进行下载之前,是否可以测试 WebOS 中是否存在文件?

默认情况下,“下载”方法将添加一个下划线 + 数字以避免覆盖,但我想要做的是避免下载本地 /media/internal/files 文件夹中已经存在的文件。 .

我查遍了整个网络,但无济于事...... 有什么线索吗? 谢谢!

【问题讨论】:

  • 我猜你问是因为你没有得到你想要的性能。但是操作系统确实应该在访问相同的 URL 时为您提供本地文件,而不管本地重命名如何。只是想说,根据我的经验,最好不要自己做缓存或类似的事情,而是看看是否还有其他原因导致性能不佳。如果网址不一样,那当然是另外一回事了。
  • 我不确定我是否理解您的回答。让我试着更好地解释我正在尝试做的事情:用户可以收听流媒体 mp3 文件,如果他喜欢它,他可以单击“下载”按钮。问题是,我想确保如果目标目录中已经存在具有相同文件名的文件,则下载不会发生以节省带宽并阻止用户下载之前已经下载的文件...

标签: webos


【解决方案1】:

可能最直接的方法是使用 Ajax 请求来尝试读取文件。 http://forums.precentral.net/web-os-development/196320-how-parse-text-file-pres-file-system-into-app.html

如果你无法读取文件,那么它显然还没有被下载。


编辑添加了 webOS 1.4 发行说明中的​​以下内容:

对于Ajax.Request,如果被请求的文件不存在,则请求不再得到“404”,认为失败,而是“0”,认为成功。 您将需要修改代码以查找不存在的文件的 transport.status 为 0,或查找存在的文件为 200。有关更多信息,请参阅the Mozilla documentation。示例:

new Ajax.Request('/media/internal/my.file', {
    method: 'get',
    onSuccess: function(transport) {
        //This is new for 1.4, we have to check the status of 
        //the transport object to see if the file exists or not.
        if (transport.status == 200)
            Mojo.Log.info('200 = http ok, file exists')
        else if (transport.status == 0)
            Mojo.Log.info('0 = response was empty, file does not exist')
    },
    onFailure: function(transport) {
        Mojo.Log.info('In 1.3.5 if the file didn’t exist the request would return here')
    }
});

【讨论】:

  • 我试过了,但由于某种原因它总是返回 true...?!
  • (未记录的“palmGetResource”调用仅适用于文本文件)
  • 很奇怪。我原以为 Ajax.request 会起作用。我有大约 80% 的把握,我以前见过这样做。我的手机完成软件更新后会立即检查...
【解决方案2】:

您还可以创建一个利用 NodeJS 的私有服务。

http://nodejs.org/docs/v0.3.1/api/fs.html#fs.statSync

【讨论】:

    猜你喜欢
    • 2011-02-16
    • 2018-12-25
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-16
    • 2011-12-13
    相关资源
    最近更新 更多