загрузка файла с помощью tomcat

#java #tomcat #struts2

#java #tomcat #struts2

Вопрос:

Использование Tomcat и Struts 2.

 public FileAction class
{ 
    ......
    public upload()
    {
        .....   
        String fullFileName = request.getContextPath()   "/productImages/"   filename;
        File theFile = new File(fullFileName);
        FileUtils.copyFile(upload, theFile);
        .....
    }
 }
 

Проблема в том, что когда я загружаю изображение, оно не добавляет изображение, localhost:8085/shoppingCart/productImages а также не дает никаких исключений.

Но когда я напишу String fullFileName="c:upload/productImages/" filename; , он сохранит файл по c:upload/productImages/ пути

означает нормальную работу в c:upload/productImages/ случае

Ответ №1:

Если вы хотите, чтобы файл был загружен в контекст сервера, вам необходимо использовать ServletContext.getRealPath(...) для поиска базового каталога развернутого приложения. Обратите внимание, что это не сработает, если вы развертываете файл war. Загруженные файлы должны размещаться в абсолютном месте на самом сервере.

Для загрузки загруженного изображения вы должны записать результат потока (поскольку вы используете Struts 2) и использовать его для загрузки и передачи загруженного файла обратно клиенту.

Комментарии:

1. но я прочитал в документации Java, что getRealPath(…) является устаревшим

2. Документы . В любом случае, это не имеет значения — вы все равно не должны загружать его в иерархию каталогов приложения. И вы, возможно, даже не сможете . Кроме того, при повторном развертывании вы рискуете перезаписать загруженные изображения. Сохраните их в другом месте.