#java #tomcat #servlets #upload
#java #tomcat #сервлеты #загрузка
Вопрос:
Я хочу загрузить файлы с веб-сервера, например, с диска d d, в сервлеты, I но я не могу их загрузить.
Что мне нужно сделать, чтобы подобная функциональность была включена в Tomcat 6.0?
Комментарии:
1. что вы пробовали, а что не работает. Что вы подразумеваете под «внешним веб-сервером». Вы хотите сохранить их в другом месте?
Ответ №1:
Это должно просто сработать. Все, что вам в принципе нужно сделать, это получить загруженный файл в формате InputStream
из тела запроса. Обычно для этого используется Apache Commons FileUpload. Затем вы можете записать его любым OutputStream
удобным для вас способом ввода-вывода Java, например FileOutputStream
.
Предполагая, что вы на самом деле используете Apache Commons FileUpload, который требует ввода-вывода Apache Commons в качестве зависимости, вот простой пример:
String filename = FilenameUtils.getName(fileItem.getName()); // Important!
File destination = new File("D:/path/to/files", filename);
InputStream input = null;
OutputStream output = null;
try {
input = fileItem.getInputStream();
output = new FileOutputStream(destination);
IOUtils.copy(input, output);
} finally {
IOUtils.closeQuietly(output);
IOUtils.closeQuietly(input);
}
В качестве альтернативы вы также можете просто использовать удобный FileItem#write()
метод Fileupload:
String filename = FilenameUtils.getName(fileItem.getName()); // Important!
File destination = new File("D:/path/to/files", filename);
fileItem.write(destination);
Дополнительные примеры, подсказки и хитрости см. в руководстве пользователя по загрузке файлов и часто задаваемых вопросах.