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!:");
}
}
# 파일 저장 부분
<?
$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;?>">
?>