현재 프로젝트로 Flex -> Java로 파일을 전송하는 걸 Netty를 이용하고 있습니다. 프로토콜은 http를 사용합니다.
Flex에서 FileReference를 사용해 로드된 파일을 ByteArray로 전송합니다.
--------------플렉스 소스-------------------------
private function fileReferenceComplete( event:Event ):void{
fr = event.currentTarget as FileReference;
.....
fileListArr.push({label:
fr.name, data:fr.data});
}
private function startUpload(booIsFirst:Boolean):void {
var params:URLVariables = new URLVariables();
params.workName = "upload_test";
params.FileName =fileListArr[_numCurrentUpload].label;
// params["FileData[]"] = imageArray;
params.FileData = fileListArr[_numCurrentUpload].data;
var request:URLRequest = new URLRequest();
request.url = _strUploadDomain;
request.method = URLRequestMethod.POST;
request.requestHeaders.push(new URLRequestHeader("Content-type", "multipart/mixed"));
request.data = params;
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.load(request);
}
자바 측에서는 Netty Http 예제인 HttpUploadServer, HttpUploadServerHandler, HttpUPloadServerInitializer를 구현했습니다.
질문 입니다. 플렉스에서 ByteArray로 된 텍스트 파일을 전송하면 자바에서 이상없이 전달됩니다. 하지만 이미지 파일같은 바이너리 파일을 전송하게 되면 헤더의 CONTENT-LENGTH가 턱없이 작게 나옵니다.
(56이지만 실제 파일 크기는 75Kb입니다.)
-------------------java에서 출력한 헤더 정보-----------------------
HTTP Upload Server at port 8200.
URI: null=
HEADER: Accept=*/*
HEADER: Accept-Language=ko-KR
HEADER: x-flash-version=11,8,800,94
HEADER: Content-Type=multipart/mixed
HEADER: Content-Length=56
HEADER: Accept-Encoding=gzip, deflate
HEADER: User-Agent=Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)
HEADER: DNT=1
HEADER: Connection=Keep-Alive
HEADER: Cache-Control=no-cache
어느 부분이 잘못되었는지 알려주시면 감사하겠습니다.