0
使用Flash Builder 4(具有4.1 flex)並找到/修改了一個可在不提示的情況下使用單個文件的腳本。現在我需要修改它來下載並保存多個文件。使用urlStream + fileStream下載多個文件
代碼的創始人說要引入一個數組,但不知道如何。 理想情況下,您只需按一下按鈕,它就會啓動該函數,然後該函數將讀取該數組,並使用從該數組的第一個結果中定義的變量來運行命令,然後切換到下一個。
這些值只會在本地或遠程不在本地的文件名稱上發生變化。
我知道如何在PHP中做到這一點,但不是flex。任何人都可以完成這個?
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="200"
title="Updater"
showStatusBar="false">
<fx:Style source="Main.css"/>
<fx:Script>
<![CDATA[
protected function download_clickHandler(event:MouseEvent):void
{
var remoteFile = "http://domain/01.jpg";
var localFile = "C:/01.jpg";
var urlStream = new URLStream();
var request = new URLRequest(remoteFile);
var fileStream = new FileStream();
var file = File.desktopDirectory.resolvePath(localFile);
var writeFile = function()
{
// Write to file
if (urlStream.bytesAvailable > 51200)
{
var dataBuffer = new ByteArray();
urlStream.readBytes(dataBuffer, 0, urlStream.bytesAvailable);
fileStream.writeBytes(dataBuffer, 0, dataBuffer.length);
}
return true;
}
var finishWriteFile = function()
{
if(urlStream.bytesAvailable > 0)
{
var dataBuffer = new ByteArray();
urlStream.readBytes(dataBuffer, 0, urlStream.bytesAvailable);
fileStream.writeBytes(dataBuffer, 0, dataBuffer.length);
}
fileStream.close();
urlStream.close();
return true;
}
fileStream.openAsync(file, FileMode.WRITE);
urlStream.load(request);
urlStream.addEventListener(Event.COMPLETE, finishWriteFile);
urlStream.addEventListener(ProgressEvent.PROGRESS, writeFile);
}
}
]]>
</fx:Script>
<mx:Image x="0" y="0" source="background.jpg"/>
<s:Button x="85" y="85" label="Update" id="download" click="download_clickHandler(event)" color="#FFFFFF" fontSize="30"/></s:WindowedApplication>
感謝您的任何意見!
感謝這段代碼,它幫助我! – Flex60460 2012-10-26 19:40:39