2011-03-28 74 views
0

我试图在Flex 4中上传图片,但尚未获得如此多的成功。有人可以帮忙吗?如何使用Filereference上传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); 
        } 
       } 

编辑:

这是真正简单的待办事项:

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


      } 

我做了第二个按钮,应保存图像,并能正常工作,但我得到对话框 了,是否真的有必要?我怎样才能防止它并明确地将其放在服务器光盘上? 替代方案(我使用.NET作为后端)采用bytearray-image并通过.net webservice发送,并让C#代码保存图像。也许这是一个更好的选择。 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!");      
       } 

      } 

这很适合当我把web服务的方法,并存储在SQLServer中的图像(=字节阵列)。

+0

你能澄清一下这个问题吗?你希望你的Flex客户端上传一个文件到服务器,还是你想将客户端产生的图像保存到本地磁盘? – Dan 2011-03-28 21:30:13

+0

我想将上传的图像保存在服务器上的磁盘上。 – marko 2011-03-29 05:19:01

回答

1

捕获图像并上传它,你可能想看看ImageSnapshot。 它会将图像编码为JPEG或PNG。保存该字节数组将为您提供更大的灵活性,并将存储在服务器中的数据从客户端的实现中分离出来。