Как сохранить загруженное изображение на диск C - PullRequest
3 голосов
/ 14 декабря 2011

Это продолжение того, что я пытался выполнить здесь https://stackoverflow.com/questions/7313922/uploading-files-ussing-myfaces-tomahawk-jsf-2-0

Мне удалось получить изображение как UploadedFile Объект, но я не могу показатьсячтобы иметь возможность сохранить его на диск.Я хочу сохранить его локально (например, в C:\Temp), чтобы при запуске приложения я мог загрузить файл (например, test.jpg) со своего рабочего стола и увидеть его на сервере (например,в C:\Temp).

Мой бин довольно прост:

import org.apache.myfaces.custom.fileupload.UploadedFile;
public class PatientBB {  

private UploadedFile uploadedFile; 

public UploadedFile getUploadedFile(){
return this.uploadedFile; 
}  
.
public void setUploadedFile(UploadedFile uploadedFile){     
this.uploadedFile = uploadedFile; 
} 
.
public String actionSubmitImage(){
//This is th part I need help with. how do I save it in my C?
}

Я очень признателен за помощь, спасибо!

Ответы [ 2 ]

7 голосов
/ 14 декабря 2011

Насколько я могу судить, согласно javaDoc , вы должны быть в состоянии сделать

uploadedFile.getInputStream();

и затем передать данные из этого файла в FileOutputStream .

псевдопользователей:

 InputStream is = uploadedFile.getInputStream();
 byte[] buffer = new byte[uploadedFile.getLength()); //This can be more space-efficient if necessary
 is.read(buffer);
 File f = new File("C:\\tmp\\" + uploadedFile.getFilename());
 f.createNewFile();
 FileOutputStream fos = new FileOutputStream(f);
 fos.write(buffer);

Это имеет смысл? Это то, что вы ищете?

0 голосов
/ 14 декабря 2011

Загруженный файл можно скопировать в указанное место с помощью API Java FileUtils.

File theFile = new File("C:\temp\filename");

Например: FileUtils.copyFile(upload, theFile);

...