Flex中Image控件相關之Java+Flex項目中ByteArray傳到伺服器端(java端)持久化(檔案上傳)<?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"
creationComplete="createHandler()"
>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.utils.Base64Encoder;
private function createHandler():void{
fileRefer.addEventListener(Event.SELECT,selectHandler); //選擇檔案
fileRefer.addEventListener(Event.COMPLETE,completeHandler);//加載完成
}
private function selectHandler(event:Event):void{
if(fileRefer){
fileRefer.load();
}
}
private function completeHandler(event:Event):void{
if(fileRefer){
mySource.source = fileRefer.data;
}
}
private var fileRefer:FileReference = new FileReference();
protected function sourceFile_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
fileRefer.browse([new FileFilter("Images(*.jpg;*.gif;*.png)","*.jpg;*.gif;*.png")]);
}
protected function btn_canvertToImage_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
if(fileRefer.data){
destSource.source = fileRefer.data;
}
}
private var urlRequest:URLRequest = new URLRequest("http://localhost:9080/ByteArrayApp/persistence");
protected function btn_persistence_clickHandler(event:MouseEvent):void
{
// TODO Auto-generated method stub
urlRequest.data = fileRefer.data;
urlRequest.contentType = "application/octet-stream";
urlRequest.method = URLRequestMethod.POST;
var urlloader:URLLoader = new URLLoader();
urlloader.dataFormat = URLLoaderDataFormat.BINARY;
urlloader.addEventListener(Event.COMPLETE,completePersistenceHandler);
urlloader.load(urlRequest);
}
private function completePersistenceHandler(event:Event):void{
Alert.show("持久化成功","恭喜");
}
]]>
</fx:Script>
<fx:Declarations>
</fx:Declarations>
<s:BorderContainer id="sourceFileContainer" x="8" y="30" borderColor="#1F7888" click="sourceFile_clickHandler(event)">
<s:Image id="mySource" x="0" y="-4" width="130" height="127"/>
</s:BorderContainer>
<s:Button id="btn_canvertToImage" x="158" y="93" width="52" height="18" label="==>" chromeColor="#1F7888"
color="#FEFDFD" click="btn_canvertToImage_clickHandler(event)"/>
<s:BorderContainer id="destSourceContainer" x="224" y="35" borderColor="#1F7888">
<s:Image id="destSource" width="130" height="127"/>
</s:BorderContainer>
<s:Button id="btn_persistence" x="372" y="90" label="==>持久化到硬碟" chromeColor="#1F7888" click="btn_persistence_clickHandler(event)"/>
<s:Label x="34" y="167" width="75" height="17" text="點選選擇圖檔"/>
</s:Application>
package com.lmx.servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class PersistenceServlet
*/
@WebServlet("/persistence")
public class PersistenceServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public PersistenceServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("============BEGIN===================");
ServletInputStream servletInputStream = request.getInputStream();
int len = request.getContentLength();
byte buffer[] = new byte[len];
int readlen=0;
FileOutputStream fos = new FileOutputStream(new File("c:/jun.jpg"));
while((readlen=servletInputStream.read(buffer))!=-1){
fos.write(buffer, 0, readlen);
}
fos.flush();
fos.close();
servletInputStream.close();
System.out.println("============END===================");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}