Во-первых, чтобы устранить распространенное недоразумение: путь к файлу бесполезен на стороне сервера. Представьте, что я являюсь клиентом и даю вам путь к файлу c:/passwords.txt
, как вы, будучи сервером, можете получить его содержимое? Используете java.io.File
? Нет? Это будет работать только в том случае, если и клиент, и сервер работают на физически . only возможный случай - локальная среда разработки.
Во-вторых, чтобы уточнить ограничение: Javascript не может ничего делать с элементом input type="file"
из-за ограничений безопасности. Если бы это было возможно, то можно было бы разработать веб-сайт, который устанавливает загруженный файл на c:/passwords.txt
и отправляет форму в течение onload
. Это легко и просто собрать все файлы паролей у всех, кто посещает сайт! Нет
В конце концов, вы довольно заинтересованы в файле содержание . Как указано в спецификации HTML-форм , необходимо установить метод запроса на POST
и кодировку запроса на multipart/form-data
в родительском элементе <form>
.
<form action="upload" method="post" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit">
</form>
Таким образом, файл будет отправлен в теле запроса. Поскольку стандартные версии API сервлетов до версии 2.5 не имеют встроенных средств для анализа mulipart/form-data
запросов, вам необходимо проанализировать запрос самостоятельно. Для этого лучше всего использовать Apache Commons FileUpload . Перейдите по ссылке и прочитайте Руководство пользователя и Часто задаваемые вопросы , где приведены примеры кода, советы и рекомендации. Если вы уже используете Servlet 3.0, вы можете просто использовать для этого Servlet API, предоставленный HttpServletRequest#getParts()
. Вы можете найти здесь статью с примерами кода об этом .