2009-09-23 1 views
1

그 다음 업로드 수정, 사용자 수 :
- button.browse
와 로컬 파일을 검색 - 하나를 선택하면 FileReference로 저장합니다.
- FileReference.load()를 수행 한 다음 데이터를 이미지 컨트롤에 바인딩합니다.
- 이미지를 회전 한 후 이미지의 데이터를 변경합니다.
- 끝내려면 서버에 업로드해야합니다. 의 FileReference 및 HttpService를 찾아 이미지 나 이미지 업 로더을하려고하고 그것을

는 내가 새로운 매트릭스를 다시 사용하고 내 이전 이미지에 바인딩 내가 표시된 이미지의 행렬을 얻을 이미지의 데이터를 변경하고 변환하려면

private function TurnImage():void 
{ 
    //Turn it 
    var m:Matrix = _img.transform.matrix; 
    rotateImage(m); 
    _img.transform.matrix = m; 
} 

이제 교인이 있다는 것입니다 내가 정말 내 서버에 파일로 데이터를 보내는 방법을 몰라 FileReference에 저장되어 FileReference 안에 데이터가 readOnly 그래서 우리는 그것을 변경할 수 없거나 새를 만들 수 없으므로 나는 사용할 수 없다.);

그렇다면 HttpService.send를 시도했지만 어떻게 파일을 보내고 mxml이 아닌지를 알 수 없습니다.

var urlRequest : URLRequest = new URLRequest(); 
urlRequest.url = 'path to your server'; 
urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary(); 
urlRequest.method = URLRequestMethod.POST; 
urlRequest.data = UploadPostHelper.getPostData('image.jpg', byteArray); 
urlRequest.requestHeaders.push(new URLRequestHeader('Cache-Control', 'no-cache')); 

// create the image loader & send the image to the server:<br /> 
var urlLoader : URLLoader = new URLLoader(); 
urlLoader.dataFormat = URLLoaderDataFormat.BINARY; 
urlLoader.load(urlRequest); 

첫째는 이미지의 BitmapData를 얻을 :

// set up a new bitmapdata object that matches the dimensions of the captureContainer; 
var bmd : BitmapData = new BitmapData(captureContainer.width, captureContainer.height, true, 0xFFFFFFFF); 

// draw the bitmapData from the captureContainer to the bitmapData object:<br /> 
bmd.draw(captureContainer, new Matrix(), null, null, null, true); 

그런 얻을 BYTEARRAY :

답변

5

당신은 같은 서버에 바이너리 된 ByteArray를 보낼은 URLLoader를 사용할 수 있습니다

var byteArray : ByteArray = new JPGEncoder(90).encode(bmd); 

및 위의 URLLoader 코드를 사용하여 이미지를 서버로 보내십시오.

FileReference.upload에서 얻은 파일 업로드 진행률을 얻지 못할 경우를 제외하고는 정상적으로 작동합니다. URLLoader를 사용하여 업로드 진행 상태를 만들 수있는 경우 여기에 답변을 게시하십시오.

관련 문제