내 서버에 Sprite를 저장하는 중 흥미로운 문제가있는 것 같습니다. 내 MAC에서 swf (원격)를 실행할 때 제대로 작동하지만 내 Windows 컴퓨터에서 똑같은 URL을 실행하면 # 2048 SecurityError가 발생합니다. 여기AS3 SecurityError # 2048 Mac 대 Windows
내 AS3 코드 :
public function saveSprite(s:Sprite):void {
var bmpData:BitmapData = new BitmapData(s.width, s.height, true, 0xFFFFFF);
bmpData.draw(s);
var byteArray:ByteArray = PNGEncoder.encode(bmpData);
var encodedFile:Base64Encoder = new Base64Encoder();
encodedFile.encodeBytes(byteArray);
var data:URLVariables = new URLVariables();
data.fileData = encodedFile;
data.fileName = "test.png";
data.location = "temp/";
var request:URLRequest = new URLRequest(scriptLocation);
request.method = URLRequestMethod.POST;
request.data = data;
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, errorLog);
loader.addEventListener(Event.OPEN, errorLog);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, errorLog);
loader.addEventListener(IOErrorEvent.IO_ERROR, errorLog);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorLog);
loader.addEventListener(ProgressEvent.PROGRESS, errorLog)
try {
loader.load(request);
} catch (e:*) {
debug.updateLog(e + "\n");
}
}
private function errorLog(e:*):void {
debug.updateLog(e + "\n");
}
AS3는 다음과 같은 한 줄 PHP 파일과 연결 : 내 맥에 SWF를 실행하면
<?php file_put_contents($_POST['location'] . $_POST['fileName'], base64_decode($_POST['fileData']));
출력은 다음과 같다 : 로그 시작 [이벤트 유형 = "취소"거품 = false cancelable = false eventPhase =[이벤트 유형 = "완료"bubbles = false cancelable = false eventPhase = 2]
Windows에서 나는 어디에서 얻을 수 있습니까? 다음 출력 : 로그 시작 [HTTPStatusEvent type = "httpStatus"bubbles = false cancelable = false eventPhase = 2 status = 0 responseURL = null][SecurityErrorEvent type = "securityError"bubbles = false cancelable = false eventPhase = 2 text = "오류 # 2048"]
이것에 대한 의견을 보내 주시면 감사하겠습니다. 내 자신의 추측은 파일 사용 권한이 있지만 무엇입니까?
미리 감사드립니다.
[편집] 더 재미 있습니다. 1. 프로젝트 전체를 다른 서버로 옮길 때 Windows와 Mac에서 # 2048을 얻습니다. 2. 내 파일 사용 권한을 777로 변경하면 Windows 및 Mac에서도 # 2048이 표시됩니다.