大家好,所有的java专家。
我有这段代码我最终可以放在一起工作:(它主要是带有一点ADF代码的java)
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
答案 0 :(得分:2)
您的代码的简化版本可以编写如下(省略一些与JSF相关的东西)。
InputStream in = myFile.getInputStream();
Files.copy(in, Paths.get(yourPath));
答案 1 :(得分:0)
您可以使用java.nio.file.Files类(自Java 1.7起)将字节数组或InputStream
写入。
// 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...);