#file #ftp #java #applet
#файл #ftp #java #апплет
Вопрос:
Я пришел к выводу, что это не сработает, но я пытаюсь выяснить, почему это не работает, и, возможно, найти способ это исправить.
В любом случае, я попытался использовать java.io .Файловые объекты в апплете, и как только я это сделал, он выдает ошибку… В любом случае, основываясь исключительно на предположениях, я полагаю, что эта проблема существует (по крайней мере частично), потому что при каждом запуске апплета используются две файловые системы, и виртуальная машина не может выбирать между файловой системой локального компьютера и серверами… Я также считаю (основываясь на том факте, что моя java выдавала ошибку всякий раз, когда я пытался импортировать java.io .* что другой причиной проблемы является то, что я импортирую эту вещь. Если бы я определил ‘File’ внутри апплета и каким-то образом указал файловую систему, которую буду использовать для JVM, решило бы это одну или обе мои проблемы? И если да, то как бы я это сделал?
Комментарии:
1. Голосование за переход на StackOverflow.
Ответ №1:
Java-апплеты выполняются в «изолированной среде» — они не получают доступа к локальной файловой системе (если вы не подпишете их и не пройдете через некоторые этапы)
Поскольку апплеты выполняются на «клиенте», они не путаются между файловой системой сервера и файловой системой клиента — файловая система сервера полностью недоступна (кроме как через посредство некоторого протокола, такого как FTP или HTTP).
Оракул говорит
Если вы пытались запустить пример апплета, вы, несомненно, увидели ошибки при нажатии кнопки Click Me. Это связано с тем, что безопасность платформы Java 2 не разрешает апплету выполнять запись в файлы и чтение из них без явного разрешения.
Апплет не имеет доступа к локальным системным ресурсам, если ему специально не предоставлен доступ.
Обновление: Некоторое разъяснение концепций:
«java ftp-апплет» — это Java-апплет, представляющий собой некоторый Java-байт-код, хранящийся в файле .jar на сервере, где он может быть передан веб-сервером, таким как Apache или IIS, в веб-браузеры, такие как Internet Explorer, FireFox, Chrome, Safari и т.д.
Использование происходит следующим образом
- Веб-браузер на персональном компьютере загружает веб-страницу с сервера, используя HTTP.
- он отправляет HTTP-запрос
- он получает HTML-ответ
- При анализе и отображении HTML «страницы» браузер находит в ней теги, которые ссылаются на апплет
- Веб-браузер использует HTTP для запроса с сервера jar-файла для апплета.
- Веб-сервер возвращает копию содержимого файла jar.
- Браузер запускает виртуальную машину Java (JVM)
- Браузер передает содержимое jar-файла апплета в JVM
- JVM на персональном компьютере (не на сервере) запускает апплет
- Браузер отображает апплет и передает щелчки мыши и нажатия клавиш обратно в JVM.
- Апплет отправляет запрос на подключение по FTP на сервер, на котором запущен FTP-демон / служба
- Сервер отвечает.
- Апплет отправляет FTP-запрос для файла.
- Сервер отправляет FTP-ответ, содержащий файл.
- Апплет выполняет что-то полезное с этим файлом.
Апплет запущен на персональном компьютере, ему разрешен доступ к файлам на этом компьютере только в том случае, если апплет подписан и ему предоставлено разрешение этим персональным компьютером.
Если персональный компьютер отдельно использовал протокол совместного использования файлов (например, NFS или SMB), который делает некоторые каталоги на сервере похожими на локальные каталоги на персональном компьютере (например, сопоставление дисков), то локальным приложениям (таким как подписанный апплет) может быть разрешен доступ к этим файлам с использованием обычного простого ввода-вывода файлов. Вероятно, это не тот случай.
Апплет никогда не имеет прямого доступа к файлам на сервере.
Апплет может взаимодействовать со службами на сервере с использованием сетевых протоколов (не обычного ввода-вывода файлов) Некоторые из этих служб (такие как службы на основе HTTP и FTP) могут разрешать передачу копий содержимого файлов на сервере.
Комментарии:
1. о, это имеет смысл, было бы нехорошо, если бы какой-нибудь старый апплет мог работать на вашем компьютере… но я даже не пытаюсь использовать файловую систему компьютера… Как мне получить доступ к файловой системе сервера, «поддерживаемой каким-либо протоколом, таким как FTP или HTTP»?
2. @FALL3N: Я бы использовал что-то вроде commons.apache.org/net/apidocs/org/apache/commons/net/ftp /… для доступа к файлам на сервере.
3. о, спасибо.. хм, круто, я никогда не слышал о классе FtpServer .. это потрясающе! тогда есть ли способ указать файловую систему сервера, а другой — получить временное разрешение на доступ к системе?
4. @FALL3N: Мы говорим о разных целях. Я обновил свой ответ, чтобы объяснить, о чем, по моему мнению, ваш вопрос. Если я ошибаюсь, пожалуйста, объясните свой вопрос тщательно и более подробно.
5. Ничего плохого в этом ответе, он был очень подробным, большое спасибо! но теперь мне нужно найти «службу на основе HTTP и FTP» (или SFTP?), которой можно управлять с помощью Java-апплета… у вас случайно нет каких-либо предложений о том, какой сервис (предпочтительно бесплатный) может это сделать?