0

我在 flash builder 4.6 中构建一个应用程序,我有在线文件​​(jpgs flvs 等),但为了节省带宽,我将文件下载到用户文件夹,因此它们只下载一次,到目前为止一切都很好而且花花公子但是,我需要检查移动设备上我的用户文件夹中的文件是否已在线更新并重新下载。我试图在没有运气的情况下到处寻找这样的例子。

我在这里先向您的帮助表示感谢。

4

2 回答 2

0

好吧,要检查文件夹中的文件,简单的var files:Array = assets.getDirectoryListing();就是为您提供所需的内容,

现在的问题是如何知道您的文件是否已更新...基本上,如果它们始终具有相同的名称,您就是不能...我所做的是生成一个随机数,每次添加新文件,并将其添加到文件名中,当您检查时,如果您有相同的编号,则无需更新,在另一种情况下您更新,

这只是你能做的一个想法,如果你有兴趣,我可以帮助你,

干杯!!


这是一个可能使它更清晰的示例:我所做的是:

xml 上的文件名如下所示:file_name?123123当我再次读取 xml 时,我这样做是为了检查:

var arr1:Array = filename.split("?"); // file name from the localStorage
var arr2:Array = xml.file.name.toString().split("?"); // file name from the XML file
if(arr1[arr1.length -1] != (arr2[arr2.length -1]){
   //download the new file and replace the old file
}

ps:我这样做是?因为@在读取 xml 时出现了一些问题,并且由于我在 Windows 上工作,并且它不接受文件名中的内容,所以在存储它之前,我只需更改文件名fileName.split("?").join("@");

于 2013-10-22T12:45:10.990 回答
0

我个人对应用程序配置文件做类似的事情。我的应用程序的大部分内容完全由我编写的 API 驱动,这些 API 有时会生成大量 JSON 数据供应用程序使用。为了避免在每次启动时下载这些数据(通常约为 200-300kb),我遵循以下模式:

  1. 检查文件是否存在 ( File.exists)
  2. 如果文件不存在,则向服务器发送请求,请求配置文件,参数为update,值为0。这确保了 Unix 时间戳永远不会小于这个
  3. 如果文件确实存在,则File.modificationDate.time作为update值发送
  4. 在服务器上,检查更新是否早于数据的修改时间(每当数据库更新时,我都会将时间戳保存到 SQL 数据库中,尽管您可以只检查文件本身的修改时间)
  5. 如果更新较旧,请发送数据。如果是较新的,发送一个简单的 json 消息。我通常会发送类似的东西{'valid':'no new data'}

这显然需要一些工作来处理 AS3 端的 JSON 返回以及一些 PHP,但它确实有效并且应该适用于任何类似的情况

于 2013-10-22T16:59:06.767 回答