我有一个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,它通过Adobe Animate中的发布设置包含在我的项目中。
也许,我必须找到一种方法将我原来的horaires3.xml文件移动到app-storage:/ location ...?
如果有人对此事有所了解。
答案 0 :(得分:0)
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();