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();