Загрузка файла с помощью Flex 4.5 FileReference IOError #2038

Я использую FileReference во Flex 4.5 для загрузки файлов на веб-сервер Tibco. Ниже приведен гибкий код, который я написал несколько месяцев назад, чтобы справиться с этим. В то время это работало просто отлично, но теперь, похоже, больше не работает, и я не могу понять, почему. Я уверен, что с этой частью кода ничего не изменилось с тех пор, как я написал ее несколько месяцев назад. Когда я пытаюсь использовать функцию для загрузки файла, я получаю следующее сообщение об ошибке: [IOErrorEvent type="ioError" bubbles=false cancellable=false eventPhase=2 text="Ошибка #2038: Ошибка ввода-вывода файла. URL: http://localhost:1112/CCWS/uploadFile?changeID=1325863504338&fileName=out%2Etxt"]

public function uploadFile():void
{

    var fr:FileReference = new FileReference();

    fr.addEventListener(IOErrorEvent.IO_ERROR,function(event:IOErrorEvent):void{
        Alert.show(event.toString());
    });

    fr.addEventListener(Event.SELECT, function (event:Event):void{

        var uploadURL:URLRequest = new URLRequest(url + "/CCWS/uploadFile" );
        var params:URLVariables = new URLVariables();
        params.fileName = fr.name;
        params.changeID = requestIDText.text;
        uploadURL.data = params;

        fr.upload(uploadURL,"fileContent");

    });

    fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, function (event:DataEvent):void{
        var obj:ObjectProxy = new ObjectProxy();
        obj.fileName = fr.name;
        obj.fileID = event.data;

        filesDataProvider.addItem(obj);
    });
    fr.browse();
}

В этом случае для URL был задан "http://localhost:1112", и сервер также работал на локальном хосте с прослушивателем http-запроса на порту 1112. Я знаю, что сервер работает нормально, поскольку на нем размещаются другие веб-сервисы из тот же процесс, и все они отвечают без помех (в том числе службы загрузки файлов).

Используя Fiddler2 для мониторинга трафика пакетов, я определил, что Flex никогда не отправлял запрос на сервер. Я упростил свой код до этого, чтобы посмотреть, смогу ли я найти, что происходит: public function uploadFile():void { var fr:FileReference = new FileReference();

    fr.addEventListener(IOErrorEvent.IO_ERROR,function(event:IOErrorEvent):void{
        Alert.show(event.toString());
    });

    fr.addEventListener(Event.SELECT, function (event:Event):void{

        var uploadURL:URLRequest = new URLRequest("http://localhost:1112/" );
        var params:URLVariables = new URLVariables();
        params.fileName = fr.name;
        params.changeID = "1325863504338";
        uploadURL.data = params;

        fr.upload(uploadURL,"fileContent");
    });

    fr.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, function (event:DataEvent):void{
        var obj:ObjectProxy = new ObjectProxy();
        obj.fileName = fr.name;
        obj.fileID = event.data;
        Alert.show(obj.fileName,obj.fileID);
        filesDataProvider.addItem(obj);
    });
    fr.browse();
}

Когда я пытаюсь загрузить файл в "http://localhost/", я получаю ответ HTTP 500, что имеет смысл, поскольку файл index.html в моем домашнем каталоге apache не обрабатывает загрузку файла. Но я также вижу информацию о пакете, отображаемую в Fiddler2. Когда я изменяю URL обратно на "http://localhost:1112/", я снова получаю сообщение об ошибке того же типа и больше не вижу транзакцию пакета в Fiddler2.

Я попытался добавить файл crossdomain.xml по адресу http://localhost/crossdomain.xml на тот случай, если может возникнуть проблема с междоменами при попытке отправки на порт 1112 (что не имеет смысла для меня, но я все равно попробовал). Файл содержал это:

Если у кого-то есть понимание того, почему у меня могут быть проблемы, я буду признателен.

0 ответов

Другие вопросы по тегам