UrlRequest请求时会缓存会话,也就是说当URL路径不改变,但指定的文件已经进行内容修改,客户端请求的结果还是最先访问产生的会话缓存,如何解决这个问题呢?
可以想到的是每次URL路径发生改变,Get方式时后面添加参数,Post方式提交不断变换的参数进而产生URL每次不同的效果,其实两种方式就是改变参数的不同。
Get:http://****/file/test.txt?random=唯一值
Post:
var variables:URLVariables = new URLVariables();
variables.rannum = Math.random();
var url:String = 文件地址
var request:URLRequest = new URLRequest(encodeURL(uri));
request.data = variables;
request.method = URLRequestMethod.POST;
另附完整代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
import mx.utils.UIDUtil;
[Bindable]
public var file:FileReference;
private var currentAction:String;
private var downloadURL:URLRequest;
private function download():void{
var url:URLRequest=new URLRequest("http://localhost:8080/FlexMessageServer/test.txt");
url.method = URLRequestMethod.POST;
url.data = UIDUtil.createUID();
file = new FileReference();
file.addEventListener(Event.COMPLETE,comple)
file.download(url)
}
private function comple(e:Event):void
{
tex.text="已下载完成!"
}
]]>
</mx:Script>
<mx:Button x="10" y="20" label="下载一个文件" click="download()"/>
<mx:ProgressBar x="10" y="100" id="progress" source="{file}" label="已加载: %3%%"/>
<mx:Text text="" x="10" y="145" id="tex"/>
</mx:Application>