Flex 与 Java 上传ByteArray图片数据

 

Flex 端的上传代码:

 

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
 <fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->
 </fx:Declarations>
 <fx:Script>
  <![CDATA[
   import com.zxt.basic.wfdesign.util.ChartExport;
   
   import mx.controls.Alert;
   
   public function exportImg():void{
    var urlRequest:URLRequest = new URLRequest("http://localhost:8080/workflow14/saveImage.jsp");
    urlRequest.data = transByteArray(myPanel);//需要上传的数据
    urlRequest.contentType = "application/octet-stream";
    urlRequest.method =  URLRequestMethod.POST;
    var urlLoader:URLLoader = new URLLoader();
    urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
    urlLoader.addEventListener(Event.COMPLETE,urlLoader_CompleteHandler);
    urlLoader.load(urlRequest); 
    
   }
   
   public function urlLoader_CompleteHandler(evt:Event):void{
    Alert.show("保存成功!");
     
   }
  

 

  /**
  * 返回图片的字节流
  */
  public static function transByteArray(displayObject:DisplayObject):ByteArray{ 
   file.addEventListener(Event.COMPLETE,uploadJpgSucc);
   var bitmapData:BitmapData = new BitmapData(displayObject.width, displayObject.height);
   bitmapData.draw(displayObject, new Matrix());  
   var jpg:JPEGEncoder = new JPEGEncoder();  
   var ba:ByteArray = jpg.encode(bitmapData);  
   return ba;
  } 
   
   
  ]]>
 </fx:Script>
 
 
 <s:Panel id="myPanel" width="584" height="261">
  
  <s:Button x="156" y="104" label="导出图片" click="exportImg();"/>
 </s:Panel>

 
</s:Application>

 

 

Java 端的接收代码:

 

  String filePath = "c:/test.png";
        InputStream inputStream = request.getInputStream();
        FileOutputStream outputStream = new FileOutputStream(new File(filePath));
      
  int formlength = request.getContentLength();
  byte[] formcontent = new byte[formlength];
  int totalread = 0;
  int nowread = 0;
  while (totalread < formlength) {
   nowread = inputStream.read(formcontent, totalread, formlength);
   totalread += nowread;
  }

        outputStream.write(formcontent);
        outputStream.flush();
        outputStream.close();
        inputStream.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值