Привет всем вам, экспертам по java.
У меня есть этот фрагмент кода, который я мог бы, наконец, собрать вместе: (это в основном java с небольшим ADF-кодом)
public String upload(){
UploadedFile myfile = this.getFile();
FacesContext fctx = FacesContext.getCurrentInstance();
ServletContext servletCtx =
(ServletContext)fctx.getExternalContext().getContext();
String imageDirPath = servletCtx.getRealPath("/");
String nomdefichier = myfile.getFilename();
String mimetype = nomdefichier.substring(nomdefichier.length() - 3);
try {
InputStream inputStream = myfile.getInputStream();
BufferedImage input = ImageIO.read(inputStream);
File outputFile =
new File( System.getProperty("user.home") + File.separator + this.path + File.separator + nomdefichier);
ImageIO.write(input, mimetype, outputFile);
} catch (Exception ex) {
// handle exception
}
FacesMessage message =
new FacesMessage(mimetype + "Successfully uploaded file " + nomdefichier +
" (" + myfile.getLength() + " bytes)" + mimetype);
fctx.addMessage(null, message);
return null;
}
Эти коды загружают изображение просто отлично. Мне бы очень хотелось узнать, есть ли файл, эквивалентный ImageIO.write, чтобы я мог загружать PDF, DOCX и т.д.
Заранее благодарим за любой ответ.
С наилучшими пожеланиями.
Marc Arbor
Упрощенная версия вашего кода может быть записана следующим образом (исключая некоторые связанные с JSF вещи).
InputStream in = myFile.getInputStream();
Files.copy(in, Paths.get(yourPath));
Files.copy()
обрабатывает вещи довольно автоматически. Сколько байтов не хватает?
Вы можете написать массив байтов или InputStream
в файл с классом java.nio.file.Files (начиная с Java 1.7).
// Saving data from an inputstream to a file:
Files.copy(inputStream, targetPath, copyOptions...);
// Saving a byte array to a file:
Files.write(path, byteArray, openOptions...);
BufferedImage
, когда вы можете просто записать байты, которые вы получаете из входного потока, прямо на диск.