Я использую 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();
}
Когда я пытаюсь загрузитьfile to "http://localhost/" Я получаю ответ HTTP 500, что имеет смысл, поскольку файл index.html в моем домашнем каталоге apache не обрабатывает загрузку файла. Но я также вижу информацию о пакете, отображаемую в Fiddler2. Когда яизмените URL на "http://localhost:1112/" Я снова получаю сообщение об ошибке того же типа и больше не вижу транзакцию пакета в Fiddler2.
Я попытался добавить файл crossdomain.xml в http://localhost/crossdomain.xml простов случае, если может возникнуть проблема с междоменными доменами при попытке отправки на порт 1112 (что не имеет смысла для меня, но я все равно попробовал).Файл содержал это:
Если у кого-то есть понимание того, почему у меня могут быть проблемы, я был бы признателен.