본문 바로가기
FLEX 공유/FLEX

flash player 13.0.0.216 header 버그 사항 해결 방법

by 반화넬 2014. 5. 22.
반응형

 

 

navigateToURL에서 헤더 지정을 할경우 POST 전송이 안되기 때문에

해당 부분을 다른 방식으로 변경하여야 합니다.

 

두번 호출 하는 방식이므로 no 변수를 선언 하여 첫번째 호출에서 파일 저장하고 두번째 호출에서 View 해줍니다.

 

=> 기존 방식

 private function captureImg():void {

    ImageSnapshot.defaultEncoder = JPEGEncoder;

    var ohSnap:ImageSnapshot = ImageSnapshot.captureImage(img);
   var imageByteArray:ByteArray = ohSnap.data as ByteArray;

   var header:URLRequestHeader = new URLRequestHeader("Content-type","application/octet-stream");
   var jpgURLRequest:URLRequest = new URLRequest("UPLOAD_URL?name=snapshotmp.jpg");
   jpgURLRequest.requestHeaders.push(header);
   jpgURLRequest.method = URLRequestMethod.POST;
   jpgURLRequest.data = imageByteArray;
   navigateToURL(jpgURLRequest,"pins");

}

pins : html iframe name

 

=> 변경

보안정책 강화로 crossdomain.xml 에 해당 부분을 추가 해야함

<allow-access-from domain="*" />

 

 private function captureImg():void {

     ImageSnapshot.defaultEncoder = JPEGEncoder;
     var ohSnap:ImageSnapshot = ImageSnapshot.captureImage(img);
     var imageByteArray:ByteArray = ohSnap.data as ByteArray;

     var urlLoader:URLLoader = new URLLoader();
     var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
     var saveJPG:URLRequest = new URLRequest(UPLOAD_URL?name=snapshotmp.jpg&no=1');
     saveJPG.requestHeaders.push(header);
     saveJPG.method = URLRequestMethod.POST;
     saveJPG.data = imageByteArray;  
     urlLoader.addEventListener(Event.COMPLETE, goToCheckout);
     urlLoader.load(saveJPG);
}

  function goToCheckout(e:Event):void{
     var url:String = UPLOAD_URL?name=snapshotmp.jpg&no=2';
     var request:URLRequest = new URLRequest(url);
     try {
       navigateToURL(request, 'pins');
     } catch (e:Error) {
       trace("Error occurred!:");
   } 
  }

pins : html iframe name

# 파일 저장 부분

<?
$tname="tmpdown/tt".time()."_".$_GET['name'].".jpg";

if ($_GET[no]==1 && isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
 echo "aaaa";
        $jpg = $GLOBALS["HTTP_RAW_POST_DATA"];
  $file = fopen($tname, "w");        
  if(!fwrite($file, $jpg)){            
    return "Error writing to file: $file";       
  }
  fclose($file);

} else {
?>
<img src="URL/<?=$tname;?>">
?>

반응형