#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. Документы . В любом случае, это не имеет значения — вы все равно не должны загружать его в иерархию каталогов приложения. И вы, возможно, даже не сможете . Кроме того, при повторном развертывании вы рискуете перезаписать загруженные изображения. Сохраните их в другом месте.