2013-03-11 7 views
0

파일 이름으로 채워진 DataGrid와 함께 Flash 응용 프로그램이 있고 사용자가 해당 표에서 여러 파일을 검사하여 로컬 드라이브에 다운로드 할 수있게하려고합니다. 파일은 데이터베이스의 blob 필드에 저장되며, php ro를 사용하여 검색합니다. URLLoader 및 FileReference를 사용하여 파일을 다운로드하려고 시도했지만 작동하지 않습니다.여러 파일 다운로드 flash

private function downloadSelected():void { 
      var dp:Object=dg.dataProvider; 
      var cursor:IViewCursor=dp.createCursor(); 

      while(!cursor.afterLast) 
      { 

       //Alert.show(cursor.current.IsChecked.toString()); 
       if (cursor.current.IsChecked.toString()=="true") { 
        //myAmostras.push(cursor.current.CodBarras.toString()); 
        //nenhumaAmostra=false; 

       var u:URLRequest= new URLRequest; 
        var variables:URLVariables = new URLVariables();    
        variables.amostras = cursor.current.CodBarras.toString(); 
        variables.disposition="attach"; 
        u = new URLRequest("savereports.php"); 
        u.method = URLRequestMethod.POST; 
        u.data=variables; 


        pdfloader = new URLLoader(); 
        //pdfloader.dataFormat=URLLoaderDataFormat.BINARY; 
        pdfloader.addEventListener(Event.COMPLETE, completeHandler,false,0,true); 
        pdfloader.addEventListener(IOErrorEvent.IO_ERROR, downloadError); 


        try { 
         pdfloader.load(u); 
        } catch (error:Error) { 
         Alert.show("Unable to load requested document."); 
        } 

       } 
       cursor.moveNext(); 
      } 
     } 

     private function downloadError(event:Event):void { 
      Alert.show("Error loading file"); 
     } 



     private function completeHandler(event:Event):void { 

      var myFileReference:FileReference = new FileReference(); 

      myFileReference.save(event.target.data); 

     } 

이 사람이 나를 도울 수 : 다음 코드인가? 대신은 URLLoader의 FileReference.download를 사용

+0

을 던져? (즉, 무슨 일이 일어나고 있습니까?) – IronMan84

+1

자세히 조사하지는 않았지만 그렇게 할 수 있다고는 생각하지 않습니다. 당신은 URLLoader를 사용하지 않아야한다고 생각합니다. 대신 FileReference.dowload() 메서드를 사용해야합니다. 또한 사용자 상호 작용이 필요한 보안 제한이 있습니다. AIR 응용 프로그램을 작성하지 않는 한 사용자 상호 작용없이 스크립트만으로 파일을 다운로드 할 수 없습니다. http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/FileReference.html#download() –

+0

감사합니다. Lars Blåsjö. 나는 Filereference를 시도하고 이제 목록에서 첫 번째 파일을 다운로드 할 수 있습니다. 다른 것들은 예외를 던집니다. 둘 이상의 파일에 대해 어떻게 작동합니까? –

답변

0

, 나는 데이터 그리드에서 선택한 첫 번째 파일을 다운로드 할 수 있지만, 다른 사람은 예외 오류 번호를 정확히 작동하지 않습니다 무엇 2041

 private function downloadSelected():void { 
      var dp:Object=dg.dataProvider; 
      var cursor:IViewCursor=dp.createCursor(); 

      var i:int=0; 
      while(!cursor.afterLast) 
      { 
       if (cursor.current.IsChecked.toString()=="true") { 

        var u:URLRequest= new URLRequest; 
        var variables:URLVariables = new URLVariables();    
        variables.amostras = cursor.current.CodBarras.toString(); 
        variables.disposition="attach"; 
        u = new URLRequest("savereports.php"); 
        u.method = URLRequestMethod.POST; 
        u.data=variables; 

        try { 


         var myFileReference:FileReference = new FileReference(); 
         myFileReference.download(u,cursor.current.CodBarras.toString()+".pdf"); 
        } catch (error:Error) { 
         Alert.show("Unable to load " + cursor.current.CodBarras.toString()+".pdf"); 
        } 

       } 
       cursor.moveNext(); 
      } 
     }