スプライトをサーバーに保存しているときに、興味深い問題が発生しているようです。MAC で swf (リモート) を実行すると正常に動作しますが、Windows コンピューターからまったく同じ URL を実行すると #2048 SecurityError が発生します。
ここに私の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 は、次の 1 行の PHP ファイルに接続します。
<?php file_put_contents($_POST['location'] . $_POST['fileName'], base64_decode($_POST['fileData']));
私の Mac で SWF を実行すると、出力は次のようになります。 =7 bytesTotal=0] [HTTPStatusEvent type="httpStatus" bubble=false cancelable=false eventPhase=2 status=200 responseURL=null] [Event type="complete" bubble=false cancelable=false eventPhase=2]
Windows では次のような出力が得られます: Log Start [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 が表示されます。