0

Flex 4 で画像をアップロードしようとしていますが、まだあまり成功していません。助けてくれる人?

私のコード:

  private var fileref:FileReference; 

                protected function application1_creationCompleteHandler(event:FlexEvent):void
                {
                    fileref = new FileReference(); 
                }


                protected function button1_clickHandler(event:MouseEvent):void
                {
                    fileref.browse(); 
                    fileref.addEventListener(Event.SELECT, fileSelect); 
                }

                private function fileSelect(e:Event):void {
                    try {
                    var data:ByteArray = e.target as ByteArray; 
                    fileref.save(data, "pic1.jpg");             
                    }
                    catch(err:Error) {
                        Alert.show("Error: " + err.message); 
                    }
                }

編集:

これは本当に単純な todo でした:

private function fileComplete(e:Event):void {
                if(fileref.data != null) {
                image1.data = fileref.data; 
                }


            }

画像を保存する 2 番目のボタンを作成しましたが、正常に動作しますが、ダイアログが表示されます。本当に必要ですか? どうすればそれを防ぎ、サーバーディスクに明示的に配置できますか? 別の方法 (バックエンドとして .NET を使用) は、bytearray-image を取得して .net Web サービス経由で送信し、C# コードで image を保存します。多分それはより良いオプションです。Actionscript 3 でできることにはいくつかの制限があるかもしれません。

protected function button2_clickHandler(event:MouseEvent):void
            {
                fileref = new FileReference(); 
                var data:ByteArray = image1.data as ByteArray; 
                if(data != null) {
                    fileref.save(data); 
                }
                else {
                    Alert.show("Picture is null!");                     
                }

            }

これは、Webservice アプローチを採用して Image (= bytearray) を SqlServer に保存したときにうまく機能しました。

4

1 に答える 1

1

画像をキャプチャしてアップロードするには、をご覧くださいImageSnapshot。画像をJPEGまたはPNGにエンコードします。そのbytearrayを保存すると、柔軟性が高まり、サーバーに格納されているデータをクライアントの実装から切り離すことができます。

于 2011-03-29T08:36:27.050 に答える