2011-12-14 2 views
3

이 내가 여기 달성하기 위해 노력했다의 후속이다 https://stackoverflow.com/questions/7313922/uploading-files-ussing-myfaces-tomahawk-jsf-2-0자바 - 내 C 드라이브에 업로드 된 이미지를 저장하려면 어떻게

나는 UploadedFile 객체로 이미지를 얻을 수 있었다, 그러나 나는 한

그것을 디스크에 저장할 수없는 것처럼 보입니다. 내 응용 프로그램을 실행할 때 내 바탕 화면에서 파일 (예 : test.jpg)을 업로드하고 서버에 저장된 내용 (예 : C:\Temp)을 로컬에서 저장할 수 있도록 로컬로 저장하려고합니다 (예 : 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? 
} 

나는 크게 모든 도움을 주셔서 감사합니다, 감사합니다!

답변

7

는 지금까지 내가 말할 수있는 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

감사합니다. 나는 적당한 temp 폴더에 파일을 가지고있다. 그래서 지금까지는 그렇게 좋다. 파일은 이미지가 아닌 단지 파일 일뿐입니다. 당신이 선언했기 때문에 (InputStream) 그걸로 맹세 한 것은 무엇이든간에, 당신은 아무 데서도 그것을 사용하지 않았습니다. – Myy

+0

좋은 캐치. 고쳤다. UploadFile이 이미지 인 경우 파일이 이미지입니다. Windows 탐색기에서 파일을 읽는 방법은 파일의 확장자가 올바른 경우 이미지보기 소프트웨어에서 열어야합니다. 이것은 모두 uploadedFile.getFilename()이 반환하는 것 (확장명이? 인 파일 이름을 반환합니까?)에 따라 다릅니다. 또한 uploadedFile.getContentType을 사용하여 mimetype을 반환 할 수 있습니다. 필요한 경우 해당 확장자로 변환 할 수 있어야합니다. –

+0

예! 그게 효과가! 이름에 '.jpeg'확장자가 없습니다. 그러나 이상한 일이 일어났습니다. 파일에 액세스하려고 시도했을 때 "Windows Photo Viewer는 anotehr 프로그램에서 편집 중이기 때문에 파일을 열 수 없습니다."라는 메시지와 함께 Windows Photo viewer를 열었습니다. 그래서 페인트로 열어 보았는데 갑자기 after2-3 분 후에 C : \ temp \ testImage.jpeg에 액세스하는 동안 공유 위반이 발생했다는 메시지가 나타났습니다. 어떤 아이디어? – Myy

-1

업로드 된 파일은 java FileUtils API를 사용하여 지정된 위치에 복사 할 수 있습니다.

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

예 : FileUtils.copyFile(upload, theFile);

+0

'FileUtils # copyFile'은'UploadedFile' 객체가 아닌'File' 객체를 사용합니다. –

+0

예,이 시도하고 매개 변수로 파일 걸립니다. – Myy

+0

예, 맞습니다. 파일 업로드는 File 객체입니다. –