Arrays 使用urlStream+下载多个文件;文件流

Arrays 使用urlStream+下载多个文件;文件流,arrays,air,download,flex4,Arrays,Air,Download,Flex4,使用Flash Builder 4(使用4.1 flex)并发现/修改了一个脚本,该脚本可以在没有提示的情况下处理单个文件。现在我需要修改它来下载和保存多个文件 代码的发起者说引入了一个数组,但他不知道该怎么做。 理想情况下,按下按钮一次,它将启动函数,然后函数读取数组并使用数组的第一个结果定义的变量运行命令,然后更改为下一个。 这些值只会在文件名上更改,而不会在本地或远程位置上更改 我知道如何在php中实现这一点,但不知道如何在flex中实现这一点。有人能完成这个吗 <s:Windowe

使用Flash Builder 4(使用4.1 flex)并发现/修改了一个脚本,该脚本可以在没有提示的情况下处理单个文件。现在我需要修改它来下载和保存多个文件

代码的发起者说引入了一个数组,但他不知道该怎么做。 理想情况下,按下按钮一次,它将启动函数,然后函数读取数组并使用数组的第一个结果定义的变量运行命令,然后更改为下一个。
这些值只会在文件名上更改,而不会在本地或远程位置上更改

我知道如何在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>

51200)
{
var dataBuffer=new ByteArray();
readBytes(dataBuffer,0,urlStream.bytesavable);
fileStream.writeBytes(dataBuffer,0,dataBuffer.length);
}
返回true;
}                
var finishWriteFile=函数()
{
如果(urlStream.bytesavable>0)
{
var dataBuffer=new ByteArray();
readBytes(dataBuffer,0,urlStream.bytesavable);
fileStream.writeBytes(dataBuffer,0,dataBuffer.length);
}                    
fileStream.close();
urlStream.close();
返回true;
}                
openAsync(文件,FileMode.WRITE);
加载(请求);
urlStream.addEventListener(Event.COMPLETE,finishWriteFile);
urlStream.addEventListener(ProgressEvent.PROGRESS,writeFile);
}
}
]]>

谢谢你的意见

这就是我现在所拥有的,而且很有效。有人看到怎么做的问题吗

<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[

        private function download_clickHandler(event:MouseEvent):void
        {
            var filearray:Array = new Array();
            filearray[0]="pregame.jpg";
            filearray[1]="01.jpg";
            filearray[2]="02.jpg";
            filearray[3]="03.jpg";
            filearray[4]="04.jpg";
            filearray[5]="05.jpg";
            filearray[6]="06.jpg";
            filearray[7]="07.jpg";
            filearray[8]="08.jpg";
            filearray[9]="09.jpg";
            filearray[10]="10.jpg";
            for (var i:uint; i < filearray.length; i++) {
                var remoteURL = "http://www.domain.com/" + filearray[i];
                var localURL = "C:/dir/" + filearray[i];
                downloadFile(remoteURL, localURL);
            }

            function downloadFile(url, fileName) {
                // Create the stream for the data request
                var urlStream = new URLStream();

                // Used to initiate request for remote file
                var request = new URLRequest(url);

                // Create file stream
                var fileStream = new FileStream();

                // Create a reference to a location on disk
                var file = File.desktopDirectory.resolvePath(fileName);

                // Called as download progresses
                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;
                }

                // Called when download completes
                var finishWriteFile = function()
                {
                    // Write to file
                    if(urlStream.bytesAvailable > 0)
                    {
                        var dataBuffer = new ByteArray();
                        urlStream.readBytes(dataBuffer, 0, urlStream.bytesAvailable);
                        fileStream.writeBytes(dataBuffer, 0, dataBuffer.length);
                    }

                    // Close streams
                    fileStream.close();
                    urlStream.close();

                    return true;
                }

                // Initiate download
                fileStream.openAsync(file, FileMode.WRITE);
                urlStream.load(request);

                // Add event listeners
                urlStream.addEventListener(Event.COMPLETE, finishWriteFile);
                urlStream.addEventListener(ProgressEvent.PROGRESS, writeFile);
            }
        }
    ]]>
</fx:Script>


<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<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"/>

51200)
{
var dataBuffer=new ByteArray();
readBytes(dataBuffer,0,urlStream.bytesavable);
fileStream.writeBytes(dataBuffer,0,dataBuffer.length);
}
返回true;
}
//下载完成时调用
var finishWriteFile=函数()
{
//写入文件
如果(urlStream.bytesavable>0)
{
var dataBuffer=new ByteArray();
readBytes(dataBuffer,0,urlStream.bytesavable);
fileStream.writeBytes(dataBuffer,0,dataBuffer.length);
}
//合流
fileStream.close();
urlStream.close();
返回true;
}
//启动下载
openAsync(文件,FileMode.WRITE);
加载(请求);
//添加事件侦听器
urlStream.addEventListener(Event.COMPLETE,finishWriteFile);
urlStream.addEventListener(ProgressEvent.PROGRESS,writeFile);
}
}
]]>