#apache-flex #actionscript-3
#apache-гибкая #actionscript-3
Вопрос:
Я пытаюсь загрузить файлы из браузера клиента на сервер с помощью Flex . Для этого я использовал класс FileReference для вызова сервлета, который выполняет загрузку. Ниже приведен код для функции uploadHandler.
private function uploadHandler(event:Event):void
{
var url:String="http://localhost/upload/WelcomeServlet";
var request:URLRequest=new URLRequest(url);
request.method=URLRequestMethod.POST;
var variables:URLVariables=new URLVariables();
variables.employeeID="sam";
request.data=variables;
file.upload(request);
}
Поскольку URLRequest выполняет http-запрос, я добавил файл сетевой политики crossdomain.xml в корневой папке моего сервера tomcat.ниже приведен xml
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="All"/>
<allow-access-from domain="*" secure="false" />
</cross-domain-policy>
Все еще я получаю приведенную ниже ошибку при попытке загрузить файл :
Error #2044: Unhandled SecurityErrorEvent:. text=Error #2049: Security sandbox violation: http://mysite.com/upload/upload.swf cannot upload data to http://localhost/upload/WelcomeServlet.
at upload/creationCompleteHandler()[C:UsersDocumentsFlex Builder 3uploadsrcupload.mxml:22]
at upload/___upload_Application1_creationComplete()[C:UsersDocumentsFlex Builder 3uploadsrcupload.mxml:4]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[C:autobuild3.2.0frameworksprojectsframeworksrcmxcoreUIComponent.as:9298]
at mx.core::UIComponent/set initialized()[C:autobuild3.2.0frameworksprojectsframeworksrcmxcoreUIComponent.as:1169]
at mx.managers::LayoutManager/doPhasedInstantiation()[C:autobuild3.2.0frameworksprojectsframeworksrcmxmanagersLayoutManager.as:718]
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.core::UIComponent/callLaterDispatcher2()[C:autobuild3.2.0frameworksprojectsframeworksrcmxcoreUIComponent.as:8628]
at mx.core::UIComponent/callLaterDispatcher()[C:autobuild3.2.0frameworksprojectsframeworksrcmxcoreUIComponent.as:8568]
это отлично работает, когда я пытаюсь загрузить с локального хостинга. Нужно ли добавлять какие-либо дополнительные аргументы компилятора? я использую flash Player 10 и apache tomcat 6.0.20. Эта ошибка беспокоит меня уже давно, был бы признателен за любую помощь
Спасибо sanre6
Ответ №1:
Почему бы не изменить эту строку:
var url:String="http://localhost/upload/WelcomeServlet";
Для:
var url:String="/WelcomeServlet";
?
Комментарии:
1. Вау, это сработало полностью. Почему это не позволяет использовать localhost / servlet? если только его домен / сервлет