Загрузка файла Flex - PullRequest
       6

Загрузка файла Flex

1 голос
/ 30 сентября 2011

В настоящее время я работаю над проектом Flex3 / blazeDS / Spring / Oracle.Мое требование - отображать список файлов с внешнего FTP-сервера в сетке, пользователь может выбрать один файл или несколько файлов для загрузки, и если пользователь выбирает несколько файлов, я должен скопировать файлы на FTP-сервере и загрузить файл tar с FTPсервер на пользовательский диск.В соответствии с моим пониманием загрузки файлов во Flex у нас есть 2 способа сделать это.1) Ссылка на файл 2) Использование navigateURL и вызов JSP / сервлетов на стороне сервера для загрузки файлов.

1) Для FileReference нам нужно сначала загрузить данные и предложить пользователю сохранить файл, нажав на какую-нибудь кнопку.По соображениям безопасности в Flex нельзя вызвать диалоговое окно «Сохранить» без события щелчка ( Обходное решение ).Но мой клиент ненавидит этот процесс, потому что он состоит из двух шагов, и он хочет, чтобы он выполнялся за один шаг, как при обычной загрузке файла, только с диалогом «Сохранить».Затем я попробовал второй вариант.

2) navigateURL.Откройте новое окно, сделайте запрос URL-адреса для JSP / Servlets и предложите диалог «Сохранить».Проблема, с которой я здесь сталкиваюсь, заключается в том, что всплывающее окно не закрывается после завершения загрузки.navigateURL не возвращает ссылку на окно, чтобы закрыть окно.Я даже пробовал разные типы контента, заголовки и java-скрипт, но ни один из них не работает.Окно закрывается, когда это отдельный файл, а не для файла tar или zip.Я хотел бы загрузить всплывающее окно для любого типа загрузок.Я использую IE7.

Любая помощь или любые другие возможные решения приветствуются.Заранее спасибо.

1 Ответ

1 голос
/ 30 сентября 2011

Вы можете использовать скрытый iframe.Таким образом, не требуется всплывающее окно / новая вкладка, просто диалоговое окно «Сохранить».

Для этого вам необходимо использовать JavaScript на странице.Примерно так должно это сделать:

<script language="JavaScript" type="text/javascript"> 
function makeFrame(theUrl) { 
   ifrm = document.createElement("IFRAME"); 
   ifrm.setAttribute("src", theUrl); 
   ifrm.style.width = 640+"px"; 
   ifrm.style.height = 480+"px"; 
   document.body.appendChild(ifrm); 
} 
</script> 

Для вызова функции из Flex используйте ExternalInterface

...