Как загрузить файл за пределы веб-сервера?

#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);
  

Дополнительные примеры, подсказки и хитрости см. в руководстве пользователя по загрузке файлов и часто задаваемых вопросах.