【问题标题】:Is it possible to download and replace an xml file from an AIR app (ActionScript 3)?是否可以从 AIR 应用程序 (ActionScript 3) 下载和替换 xml 文件?
【发布时间】:2018-01-03 22:12:47
【问题描述】:

我有一个 AIR 应用程序 (AS3),它显示来自本地 xml 文件的信息。

我想知道是否可以让代码检查互联网上 xml 文件的版本,看看我的服务器上是否有更新的版本。如果是这样,应用程序将下载并替换 xml 文件。

这样我就不必为了更新 xml 文件信息而更新所有应用程序。

而且,你知道IOS(或Android)是否可以允许应用在用户不知情的情况下下载和替换xml?

我在想这样的事情,但我从未尝试过制作要下载的文件并替换 AS3 上的原始文件:

if(myXMLfile.name == data.name_of_xml_Online){
//do nothing
else{
startDownload();
}

function startDownload():void 
    { 
        var request:URLRequest = new URLRequest(); 
        request.url = http://www.mywebsite/xmlfile.xml; 
        fr.download(request); 
}

编辑

这就是我所做的:

function startDownload():void{
var urlString:String = "http://mywebsite/horaires3.xml";
var urlReq:URLRequest = new URLRequest(urlString);
var urlStream:URLStream = new URLStream();
var fileData:ByteArray = new ByteArray();
urlStream.addEventListener(Event.COMPLETE, loaded);
urlStream.load(urlReq);



function loaded(event:Event):void {
urlStream.readBytes(fileData, 0, urlStream.bytesAvailable);
writeFile();
}



function writeFile():void {
var file:File = File.applicationStorageDirectory.resolvePath("horaires3.xml");
var fileStream:FileStream = new FileStream()
fileStream.open(file, FileMode.WRITE);
    urlRemote_txt.text = file.url;
fileStream.writeBytes(fileData, 0, fileData.length);
fileStream.close();
trace("The AIR file is written.");
}

}

文件已下载,没有错误,但似乎没有替换应用程序的horaires3.xml..

urlRemote_txt.text = app-storage:/horaires3.xml

在我为本地 xml 文件输入 urlLocal_txt.text 之前,它是 = horaires3.xml

所以似乎有 2 个不同的“目录”,还是因为我在计算机而不是设备上测试它?

请注意,对于原始 horaires3.xml,它通过 Adob​​e Animate 中的发布设置包含在我的项目中。

也许,我必须想办法将我原来的 horaires3.xml 文件移动到 app-storage:/ location...?

如果有人对此事有任何想法。

【问题讨论】:

  • 您无法替换原始文件,因为 app:/ 位置是只读的。但是,您可以完全访问 app-storage:/注意:一个斜杠是正确的)位置,我认为您甚至不需要任何权限来写东西它。您可以使用 File + FileStream 类将文件写入存储文件夹。
  • 感谢您的回答。那么,如果我想更新应用程序的 xml 文件,你建议我怎么做?
  • 我不明白你的问题是什么。您无法设计出合适的算法?你不知道怎么翻译成AS3?
  • 冷静点,伙计。这是一个寻求帮助的论坛。如果我知道该怎么做,你真的认为我会花时间发帖吗?显然我不知道使用什么逻辑。所以,如果你能帮忙,很好。如果没有,则无需发布任何内容。
  • 其实 Stack Overflow 是一个问答网站,not a forum。至于让自己冷静下来,请考虑到您正在向某个您要求自愿免费帮助您的人讲课。 @steph45

标签: android ios xml actionscript-3 air


【解决方案1】:

FileReference.download() 似乎在提示用户,所以我猜你不希望这样。而且我不知道File.copyTo() 是否适用于这样的远程文件。如果没有,您可以尝试像这样使用FileStream

var byteArray:ByteArray = new ByteArray();

var remoteFile:FileStream = new FileStream();
remoteFile.open(pathToRemoteFile, FileMode.READ);
remoteFile.readBytes(byteArray);
remoteFile.close();

var localFile:FileStream = new FileStream();
localFile.open(pathToLocalFile, FileMode.WRITE);
localFile.writeBytes(byteArray);
localFile.close();

【讨论】:

  • 也许,我必须想办法将我原来的 horaires3.xml 文件移动到 app-storage:/ location...?
  • 你写了urlRemote_txt.text = app-storage:/horaires3.xml。这是否意味着您的文件已经在应用存储中?
  • app-storage:/horaires3.xmlhoraires3.xml 之间似乎存在差异,因为我的 xml 文件 horaires3.xml 没有被 app-storage:/horaires3.xml 替换
猜你喜欢
  • 1970-01-01
  • 2012-05-26
  • 2011-08-24
  • 2011-03-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-14
  • 1970-01-01
相关资源
最近更新 更多