Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex flex中的多次下载_Apache Flex_Download - Fatal编程技术网

Apache flex flex中的多次下载

Apache flex flex中的多次下载,apache-flex,download,Apache Flex,Download,有人能帮我吗 我想从服务器端下载文件到客户端,而不会在服务器端发生任何更新时提示用户下载 现在我正在使用urlstream类,但第一个文件正在完全下载其余的文件内容,部分下载 编辑 代码样本取自其他帖子。警告:这是一个huuuge代码块 <?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:MyComp

有人能帮我吗

我想从服务器端下载文件到客户端,而不会在服务器端发生任何更新时提示用户下载

现在我正在使用urlstream类,但第一个文件正在完全下载其余的文件内容,部分下载

编辑

代码样本取自其他帖子。警告:这是一个huuuge代码块

<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
    xmlns:MyComp="client.components.*" layout="absolute" height="554" width="817" 
    backgroundGradientAlphas="[1.0, 0.0]" 
    backgroundGradientColors="[#ABA9A7, #03143B]" creationComplete="init();">

<mx:Script>
<![CDATA[
    import flash.system.Capabilities;
    import mx.collections.XMLListCollection;
    import mx.rpc.Fault;
    import mx.rpc.events.ResultEvent;
    import mx.rpc.events.FaultEvent;
    import mx.events.ListEvent;
    import mx.collections.ArrayCollection;
    import flash.data.SQLConnection;
    import flash.errors.SQLError;
    import flash.events.SQLErrorEvent;
    import flash.events.SQLEvent;
    import flash.filesystem.File;
    import flash.errors.SQLError;
    import mx.controls.Alert;
    import mx.events.CloseEvent;
    import flash.net.*;
    import flash.filesystem.*;
    import flash.events.OutputProgressEvent;

    private var urlstring:String="server path";
    private var urlReq:URLRequest; 
    private var urlStream:URLStream; 
    private var fileData:ByteArray = new ByteArray(); 
    private var sqlConnection:SQLConnection =null;
    private var sql:String;
    private var result:SQLResult;
    private var stmt:SQLStatement=null; 
    private var catid:int=0; 
    private var testcollection:Array=new Array();

    [Bindable]
    private var DGArray:ArrayCollection = new ArrayCollection(testcollection);
    private var number:int;
    private var selection:Boolean=false;
    private var timestamp:String;
    private var xmlcol:XMLListCollection; 
    private var categoryid:int=0; 
    private var numbers:int;
    private var index:int=0;
    private var findex:int=0;
    private var nupdates:int=0; 
    private var newfile:String="";
    private var selectstream:int=1; 
    private var startdownload:Boolean=false;

    public function init():void{
        userRequest.send(null);
        sqlConnection= new SQLConnection();
        //create a new db-file in the application storage location 
        var file:File = new File("app:/E-catalog.db");
        sqlConnection.addEventListener(SQLEvent.OPEN,dbOpenedHandler);
        sqlConnection.addEventListener(SQLErrorEvent.ERROR,dbErrorHandler);

        sqlConnection.open(file);

        getData();
    }

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

        for(var x:int=0;x<nupdates;x++){
            var filename:Object=xmlcollection.getItemAt(x);
            newfile=filename['pdfimage'];
            writeAirFile(); 
        }

    } 

    public function writeAirFile():void { 
        /*
        var obj:Object=new Object;
        startdownload=true;
        var file:File = File.applicationStorageDirectory.resolvePath(newfile); 
        fileStream = new FileStream(); 

        fileStream.openAsync(file, FileMode.WRITE); 
        fileStream.writeBytes(fileData, 0, fileData.length); 
        fileStream.addEventListener(Event.COMPLETE,progressHandler,true,10,true);

        for(var x:int=0;x<fileData.length;x++){}

        startdownload=false; 
        fileStream.close();
        */
    }

    public function progressHandler(event:Event){
        Alert.show("File downloading");
    }

    public function dbOpenedHandler(event:SQLEvent):void{}

    public function dbErrorHandler(error:SQLError):void{}

    public function getData():void{
        sql = "SELECT STRFTIME('%Y-%m-%d %H:%M:%S',lupdated_dt)as lupdated_dt FROM update_mas where delflag=0 ";
        stmt = new SQLStatement();
        stmt.sqlConnection = sqlConnection;

        stmt.text = sql;

        stmt.addEventListener(SQLEvent.RESULT, selectResult);
        stmt.addEventListener(SQLErrorEvent.ERROR, selectError);
        stmt.execute();
    }

    public function selectResult(event:SQLEvent){
        DGArray.removeAll();
        number=1;   
        var result = stmt.getResult();
        var numRows = result.data.length;

        for (var i = 0; i < numRows; i++){
            for(var col:String in result.data[i]){
                timestamp=result.data[i][col];
            }
        }

        updateRequest.url="serverpath ?time="+timestamp+"";
        updateRequest.send(null);
    }

    public function selectError(event):void{
        stmt.removeEventListener(SQLEvent.RESULT, selectResult);
        stmt.removeEventListener(SQLErrorEvent.ERROR, selectError);
        Alert.show("SELECT error:");
    }

    public function displayPOPUP(event:ResultEvent):void{
        nupdates=((int)(event.result));
        if(nupdates==0){
        }else{
            selection=Alert.show(""+nupdates+"Updates available", "UPDATES", Alert.YES|Alert.NO, this, alertClickHandler);
        }
    } 

    private function alertClickHandler(event:CloseEvent):void {
        if (event.detail==Alert.YES){ 
            downloadRequest.url="serverpath ?time="+timestamp;
            downloadRequest.send(null);
        }else
            Alert.show("download cancelled");
    }

    public function displayResult(event:ResultEvent):void{
        var record:String="";
        sql="";
        for(index=0;index<xmlcollection.length;index++){
            var category:Object=xmlcollection.getItemAt(index);
            sql="select Id FROM CATEGORY where delflag=0 and cat_name='"+category['catname']+"'";
            stmt = new SQLStatement();
            stmt.sqlConnection = sqlConnection;
            stmt.text = sql;
            stmt.addEventListener(SQLEvent.RESULT,checkRecord);
            stmt.addEventListener(SQLErrorEvent.ERROR,checkError);
            stmt.execute();
        }
    }

    public function checkRecord(event:Event):void{
        var category:Object=xmlcollection.getItemAt(index); 
        var path:String="";
        var result:SQLResult = stmt.getResult();
        if(result.data==null){  
            var sql:String= "INSERT INTO CATEGORY (cat_name, created_user,created_dt,updated_user,updated_dt,image_jpg,image_pdf) ";
            sql += "VALUES ('"+category['catname']+"',";
            sql +="'admin','"+category['cdate']+"','admin','"+category['udate']+"'"+category['pictimage']+"','"+category['pdfimage']+"' )";
            stmt = new SQLStatement();
            stmt.sqlConnection = sqlConnection;
            stmt.text = sql;
            stmt.addEventListener(SQLEvent.RESULT,insertRecord);
            stmt.addEventListener(SQLErrorEvent.ERROR,insertError);

            stmt.execute(); 
        }else{
            sql="";
            sql="update CATEGORY set created_dt='"+category['cdate']+"', updated_dt='"+ category['udate']+"',image_jpg='"+category['pictimage']+"', image_pdf='"+category['pdfimage']+"' where delflag=0 and cat_name='"+category['catname']+"'";
            stmt = new SQLStatement();
            stmt.sqlConnection = sqlConnection;
            stmt.text = sql;
            stmt.addEventListener(SQLEvent.RESULT,updateResult);
            stmt.addEventListener(SQLErrorEvent.ERROR,updateError);
            stmt.execute();
        }

        userRequest.send(null);

        var ludt_dt:Object=xmlcollection.getItemAt((xmlcollection.length-1));
        timestamp="";
        timestamp=ludt_dt['udate'];
        sql="";
        sql="update update_mas set lupdated_dt='"+timestamp+"' where delflag=0 ";
        stmt = new SQLStatement();
        stmt.sqlConnection = sqlConnection;
        stmt.text = sql;
        stmt.addEventListener(SQLEvent.RESULT,updateResult);
        stmt.addEventListener(SQLErrorEvent.ERROR,updateError);
        stmt.execute();
        var temp:int=0;
        for(var x:int=0;x<=xmlcollection.length-1;){
            var urlstring:String="http://sidssoldc:81/lessons/ravi/";
            var url:Object=xmlcollection.getItemAt(x);
            urlstring+=url['pdfimage'];
            path=url['pdfimage'];
            while((path.indexOf('/',0)!=-1)){
                path=path.slice(path.indexOf('/',0)+1,path.length);
            }

            urlReq=new URLRequest(urlstring);
            var filename:Object=xmlcollection.getItemAt(x);
            var loader:URLLoader=new URLLoader();
            loader.dataFormat="binary";

            selectstream=2;
            loader.load(urlReq);

            loader.addEventListener(Event.COMPLETE,function(event:Event){
                var loader:URLLoader=(URLLoader)(event.target);
                loader.dataFormat="binary";
                var ofstream2:FileStream= new FileStream();
                var ofstream1:FileStream= new FileStream();
                var ofstream3:FileStream= new FileStream(); 
                if(selectstream==1){
                    var ofile1:File = File.applicationStorageDirectory.resolvePath('images/pdf/'+path); 
                    ofstream1.openAsync(ofile1, FileMode.WRITE); 
                    ofstream1.writeBytes(loader.data, 0, loader.bytesTotal);
                    selectstream++;
                }else if(selectstream==2){
                    ofstream1.close();
                    var ofile2:File = File.applicationStorageDirectory.resolvePath('images/pdf/'+path); 
                    ofstream2.openAsync(ofile2, FileMode.WRITE); 
                    ofstream2.writeBytes(loader.data, 0, loader.bytesTotal);
                    selectstream++;
                }else if(selectstream==3){
                    ofstream2.close();
                    var ofile3:File = File.applicationStorageDirectory.resolvePath('images/pdf/'+path); 
                    ofstream3.openAsync(ofile3, FileMode.WRITE); 
                    ofstream3.writeBytes(loader.data, 0, loader.bytesTotal);
                }

                if(selectstream==3){
                    ofstream3.close();
                }
            });

            x++;

            temp=loader.bytesTotal;

            checkStream.close();
        }

        /*urlStream=new URLStream();
        urlStream.addEventListener(Event.COMPLETE, function(event:Event){

        urlStream.readBytes(fileData, 0, urlStream.bytesAvailable); 

        for(var x:int=0;x<nupdates;x++){
            var filename:Object=xmlcollection.getItemAt(x);
            newfile=filename['pdfimage'];
            var obj:Object=new Object;
            startdownload=true;
            var file:File = File.applicationStorageDirectory.resolvePath(newfile); 
            var fileStream:FileStream = new FileStream(); 

            fileStream.openAsync(file, FileMode.WRITE); 
            fileStream.writeBytes(fileData, 0, fileData.length); 
            fileStream.addEventListener(Event.COMPLETE,progressHandler,true,10,true);

            for(var x:int=0;x<fileData.length;x++){
                startdownload=false; 
                fileStream.close(); 
            }
        });

        urlStream.load(urlReq);
        x++;*/
    }

    public function insertRecord(event:Event):void{}

    public function insertError(event:Event):void{}

    public function updateResult(event:Event):void{}

    public function updateError(event:Event):void{
        Alert.show("update failed");
    }

    public function checkError(event:Event):void{
        Alert.show("error");
    }
    public function showError(event:FaultEvent):void{
        Alert.show(""+event.fault);
    }

    public function itemClick(event:ListEvent):void{}
]]>
</mx:Script>

<mx:DataGrid id="dgUserRequest" sortableColumns="false" x="99" y="115" width="364" textAlign="left" itemClick="itemClick(event);" rowHeight="30" doubleClickEnabled="false" height="297" themeColor="#ACF4F8" visible="true" editable="false" dataProvider="{catxmlcollection}" color="#000C0E" fontSize="11" >
    <mx:columns>
        <mx:DataGridColumn id="ID" headerText="Id" visible="false" dataField="catid" />
        <mx:DataGridColumn id="snumber" width="70" headerText="SerialNo" dataField="sno" visible="true" />
        <mx:DataGridColumn id="CATEGORY3" width="250" headerText="CATEGORY" dataField="catname" visible="true" />
    </mx:columns>
</mx:DataGrid>

<mx:XMLListCollection id="catxmlcollection" source="{userRequest.lastResult.categories.category}"/>

<mx:HTTPService id="userRequest" url="http://192.168.10:81/lessons/ravi/cat.php" fault="showError(event);" useProxy="false" method="GET" resultFormat="e4x" />
<mx:HTTPService id="updateRequest" result="displayPOPUP(event);" fault="showError(event);" method="GET" > </mx:HTTPService>

<mx:XMLListCollection id="xmlcollection" source="{downloadRequest.lastResult.Categories.Category}" />

<mx:HTTPService id="downloadRequest" result="displayResult(event);" fault="showError(event);" useProxy="false" method="GET" resultFormat="e4x" ></mx:HTTPService>
<mx:HTTPService id="categoryRequest"></mx:HTTPService>

<mx:Label x="216" y="53" text="Category Master" fontWeight="bold" fontSize="12" width="151"/>

</mx:WindowedApplication>

您需要提供更多详细信息。我甚至无法理解您是想从服务器刷新数据,还是想在未经用户许可的情况下下载文件。如果是前者,那么投票就是一条出路。对于后者,你可能会关闭商店,因为没有人会使用一个没有事先询问就下载东西的应用程序


.p

我在同时发送多个请求时遇到一些问题。。。例如,当试图同时加载20个图像时,只有部分图像被正确接收。我不确定是什么原因导致了这种情况,但我建议您尝试按顺序进行传输,因为它解决了我所有的问题。实际上,你可以把它们放在一个数组中,当前一个数组完成时,总是取下并移除上面的数组。

哎哟。我的耳朵。请停止叫喊。我们需要一些源代码来帮助解决代码中的问题…urlReq=newurlrequest(urlstring);var filename:Object=xmlcollection.getItemAt(x);变量加载器:URLLoader=新的URLLoader();loader.dataFormat=“binary”;loader.load(urlReq);loader.addEventListener(Event.COMPLETE,function(Event:Event){var-loader:URLLoader=(URLLoader)(Event.target);loader.dataFormat=“binary”;流2的变量:FileStream=new FileStream();流1的变量:FileStream=new FileStream();流3的变量:FileStream=new FileStream();if(selectstream==1){var ofile1:File=File.applicationStorageDirectory.resolvePath('images/pdf/'+path);ofstream1.openAsync(ofile1,FileMode.WRITE);ofstream1.writeBytes(loader.data,0,loader.bytesTotal);}它可能是一个“自动更新”类型的提示……或者如果您喜欢“设置它,然后忘记它!”自动下载文件是有充分理由的,但是你是正确的,没有人会使用(或应该使用)未经询问就下载内容的应用程序。它应该是应用程序配置中的用户应用设置。