0

誰かがこれで私を助けてくれることを願っています!

私はFlashで簡単なオンライン3Dエディターを作成しました。これは、選択したクライアントに送信されようとしていますが、ファイルアップローダーには、醜い頭を抱えたばかりのちょっとした不具合があります。FileReferenceを使用してメディアをhttpsページにアップロードすると、OSXでの夢のように機能しますが、Windowsでは、すべてのブラウザーでエラー2038が返されます。誰かがこれに遭遇したことがありますか?

どんな助けでも大歓迎です!

public class CustomFileReferenceList extends FileReferenceList {

    private var uploadURL:URLRequest;
    private var pendingFiles:Array;

    public static var length:int = 0;
    public static var arrLen:int = 0;

    public function CustomFileReferenceList() {
        uploadURL = new URLRequest();
        uploadURL.url = "https://___";
        var rqd:URLVariables = new URLVariables();
        uploadURL.method = URLRequestMethod.POST;
        rqd.sessionId = Main.sessionId;
        uploadURL.data = rqd;
        initializeListListeners();
    }

    private function initializeListListeners():void {
        addEventListener(Event.SELECT, selectHandler);
        addEventListener(Event.CANCEL, cancelHandler);
    }

    private function doOnComplete():void {
        //var event:Event = new Event(Uploader.LIST_COMPLETE);
        //dispatchEvent(event);
enter code here
    }

    private function addPendingFile(file:FileReference):void {
        pendingFiles.push(file);
        file.addEventListener(Event.OPEN, openHandler,false,0,true);
        file.addEventListener(Event.COMPLETE, completeHandler,false,0,true);
        file.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler,false,0,true);
        file.addEventListener(ProgressEvent.PROGRESS, progressHandler,false,0,true);
        file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler,false,0,true);
        file.upload(uploadURL);
    }

    private function removePendingFile(file:FileReference):void {
        for (var i:uint; i < pendingFiles.length; i++) {
            if (pendingFiles[i].name == file.name) {
                pendingFiles.splice(i, 1);
                if (pendingFiles.length == 0) {
                    doOnComplete();
                }
                return;
            }
        }
    }

    private function selectHandler(event:Event):void {


        arrLen = length = fileList.length;
        pendingFiles = new Array();
        var file:FileReference;
        for (var i:uint = 0; i < fileList.length; i++) {
            file = FileReference(fileList[i]);
            addPendingFile(file);
        }
    }

    private function cancelHandler(event:Event):void {
        //var file:FileReference = FileReference(event.target);
    }

    private function openHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
    }

    private function progressHandler(event:ProgressEvent):void {
        var file:FileReference = FileReference(event.target);
    }

    private function completeHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
        length--;
        removePendingFile(file);
    }

    private function httpErrorHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
    }

    private function ioErrorHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
    }

    private function securityErrorHandler(event:Event):void {
        var file:FileReference = FileReference(event.target);
    }
}
4

2 に答える 2

0

ほぼすべての解決策を試した後、他のWeb開発者は、それが問題なく機能することを発見しました。絶対にクレイジー。

于 2012-10-03T11:28:16.013 に答える
0

私は今日この問題を抱えています。私の場合、ソースの長さ(url / nativePath)とデスティンの長さを追跡していました。宛先URLの長さは最大256文字であることがわかりました。

これを解決するために、私は宛先ポイントが変更されました(シンボリックリンクまたはネットワークドライブを使用)

例:

// MAC remote path
var mSt:String  = "file:////MacBook-Pro-de-Jaime.local/Seagate/netShared/transport-machines/SoftDepot/";

// Windows Remote Drive (\\MacBook-Pro-...\transport-machines)
// Remote MAC as Windows Drive N
var mSt:String  = "file:///N:/SoftDepot/";

出来上がり、新しい名前はいくつかの文字を減らします。

于 2015-06-19T18:35:39.013 に答える