Я пытаюсь добавить на свою веб-страницу простую функцию загрузки пользовательских изображений. На данный момент у меня есть (насколько я могу судить) загруженное рабочее изображение - когда я загружаю изображение, оно появляется в правильной папке в каталоге моего веб-приложения. Однако я пытаюсь отобразить изображение на странице после загрузки пользователем, но по какой-то причине оно не отображается, даже если исходный код страницы выглядит правильно ...

В файле jsp я использую код

                FileItem fi = (FileItem)i.next();
                if ( !fi.isFormField () ) {
                    // Get the uploaded file parameters
                    String fieldName = fi.getFieldName();
                    String fileName = fi.getName();
                    boolean isInMemory = fi.isInMemory();
                    long sizeInBytes = fi.getSize();
                    // Write the file
                    if( fileName.lastIndexOf("\\") >= 0 ){
                        file = new File( filePath + fileName.substring( fileName.lastIndexOf("\\"))) ;
                    }
                    else {
                        file = new File( filePath + fileName.substring(fileName.lastIndexOf("\\")+1)) ;
                    }
                    fi.write( file ) ;
                    out.println("Uploaded Filename: " + filePath + fileName + "<br></br>");
                    out.println("<img src = \"uploads/" + fileName + "\"></img>");

Когда я загружаю изображение, на странице отображается «Имя загруженного файла: ...», но не изображение. Если я просматриваю исходный код страницы, я также вижу строку кода, относящуюся к изображению, и если я нажимаю на источник изображения «uploads / photo.png», фотография открывается на новой странице браузера. Я понятия не имею, почему я не могу его отобразить - я также пытался изменить путь, но похоже, что это должен быть правильный ...

Моя структура папок: корень webapps index.jsp upload.jsp uploads photo.png

Это проблема с Tomcat (я использую Tomcat 7) или с тем, как я использую страницу jsp или путь к файлу? Если у кого-то есть какие-то подсказки, мы будем очень признательны ...

0
user3337052 22 Мар 2014 в 02:04

2 ответа

Лучший ответ

Исправлено, добавив эти две строки в начало html-файла, созданного jsp:

out.println("<!DOCTYPE html>");
out.println("<html xmlns='http://www.w3.org/1999/xhtml'>");
0
user3337052 23 Мар 2014 в 01:09

Ваш синтаксис для тега изображения неправильный. Тег img является самозакрывающимся (<img />), а не двумя частями (<img></img>).

out.println("<img src='uploads/" + fileName + "' />");

Я изменил \" на ', чтобы облегчить чтение. HTML может использовать одинарные кавычки для атрибутов.

0
developerwjk 22 Мар 2014 в 03:17
Спасибо за предложение, но результат тот же! Если я просматриваю исходный код страницы, я вижу следующее: Загрузка файла JSP Имя загруженного файла: /Applications/tomcat/webapps/ROOT/uploads/pic.jpg< br>
и если я нажму на pic.jpg, изображение откроется в новом окне, но не будет отображаться на странице :/
 – 
user3337052
22 Мар 2014 в 12:29