Вы использовали браузер MSIE, в котором есть ошибка, при которой он отправляет абсолютный путь к файлу вместо одного имени файла в <input type="file">
. Вы на стороне сервера получаете абсолютный путь к файлу в качестве параметра и затем используете его для поиска файла в файловой системе диска на стороне сервера. Очевидно, это будет работать только тогда, когда и веб-сервер, и веб-браузер будут работать на физически на одной и той же машине.
Когда веб-сервер работает на физически другом компьютере, этот абсолютный путь к файлу не обязательно указывает на существующий файл в файловой системе локального диска компьютера. Если бы сервер мог получить доступ к файловой системе локального диска клиента, имея только абсолютный путь к файлу, то это было бы огромной дырой в безопасности! Каждый веб-сайт, который вы посещаете, сможет пускать в ход / манипулировать дисками посетителей сайта! Нет, к счастью это невозможно.
Вас не должен интересовать абсолютный путь загружаемого файла, так как он находится на стороне клиента. Вы скорее должны быть заинтересованы в загруженном файле content . Чтобы получить содержимое файла, вы должны убедиться, что тип кодировки HTML <form>
установлен следующим образом:
<form action="upload" method="post" enctype="multipart/form-data">
Таким образом, вы можете использовать Apache Commons FileUpload в сервлете, чтобы получить содержимое файла как InputStream
. Вы можете использовать InputStreamReader
, чтобы украсить его в Reader
.
Смотри также: