JSP проблема request.getparameter - PullRequest
0 голосов
/ 12 мая 2011

Я использую

<input type="file" name="file" value="">

, чтобы просмотреть файл изображения для загрузки.Но когда я использую

 String imageUrl = request.getParameter("file");
 out.println("logofile" + imageUrl);

на странице действий, он показывает только имя изображения, а не полный абсолютный путь.Когда я пытаюсь использовать

File file = new File(imageUrl);

, выдается следующее исключение

java.io.FileNotFoundException: apple-logo.jpg (The system cannot find the file specified) 

Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 12 мая 2011

Проблема в том, что вы пытаетесь получить содержимое файла из локальной файловой системы веб-сервера по имени, отправляемому веб-браузером.Это совершенно неправильно.Только Internet Explorer проявляет ошибку, что он отправляет полный путь, а не только имя.Однако полный путь для вас бесполезен, поскольку веб-сервер обычно не имеет доступа к файловой системе локального диска клиента.

Вместо этого вы должны получить реальное содержимое файла из тела запроса, отправленного веб-браузером.Для этого вам необходимо убедиться, что ваша HTML-форма имеет атрибуты method="post" и enctype="multipart/form-data".

<form action="upload" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="submit" />
</form>

Затем в методе doPost() сервлета, который прослушивает шаблон URL-адреса:/upload, используйте HttpServletRequest#getParts() или, если вы все еще используете Servlet 2.5 или старше, используйте Apache Commons FileUpload для обработки частей запроса multipart / form-data.Он будет содержать загруженный файл среди обычных параметров запроса.

См. Также:

0 голосов
/ 12 мая 2011

Вы можете проверить здесь для пользователя Apache Commons File Upload.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...