2013-10-22 99 views
0

我正在Flash Builder 4.6中創建一個應用程序,我有文件(jpgs flvs等)在線,但爲了節省帶寬,我將這些文件下載到用戶文件夾,以便它們只下載一次,到目前爲止,所有這些都非常棒,但是,我需要檢查手機中已經在我的用戶文件夾中的文件是否已在線更新並重新下載。我試圖尋找一個無處不在的例子。比較文件 - 檢查更新

感謝您的幫助提前。

回答

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,它不接受在文件名,以便之前e存儲它我更改文件名只是fileName.split("?").join("@");

+0

謝謝,我得到了這一點,事情是我不想改變文件名。我已經在檢查這些文件是否在設備上,並且如果沒有根據需要下載它們。我至少跳過一次大小驗證,看看兩個版本是否相同,我知道這不是失敗的證據,但它可能是一個開始:)如果這是不可能的,我可以改變文件名和xml中的條目刪除舊的和下載新的,它只是在這個過程中添加了一個步驟和幾行代碼。 –

+0

您可以在映像文件上使用HTTP HEAD請求來獲取服務器上的大小和上次修改日期。你只需要使用HTTPService就可以使它成爲HEAD而不是GET請求。 – Brian

+0

Sry,我在工作,我編輯了我的答案,希望這個例子解釋我的意思 –

0

我個人做類似的應用程序配置文件。我的應用程序的大部分內容完全由我編寫的API驅動,並且API有時可以生成大量的JSON數據供應用程序使用。爲了避免下載的每一次啓動這個數據(通常約200-300kb),我遵循這個模式:

  1. 檢查文件是否存在(File.exists
  2. 如果文件不存在,發送請求給服務器配置文件,其參數爲update,值爲0。這將確保沒有任何Unix時間戳將永遠不會小於這個
  3. 如果文件不存在,發送File.modificationDate.timeupdate
  4. 在服務器上,檢查更新比數據的修改時間(我保存舊的時間戳到SQL數據庫時,只要檢查文件本身的修改時間即可)
  5. 如果更新較舊,請發送數據。如果它更新,發送一個簡單的json消息。我通常送類似{'valid':'no new data'}

這顯然需要一些工作處理在AS3結束以及一些PHP的JSON的回報,但它肯定可行,應適用於任何類似的情況