2011-12-14 22 views
3

これは、私がここで達成しようとしたものへのフォローアップであるhttps://stackoverflow.com/questions/7313922/uploading-files-ussing-myfaces-tomahawk-jsf-2-0Javaは - 私は私のCドライブにアップロードしたイメージを保存するにはどうすればよい

私は UploadedFile対象となる画像を得ることができたが、私きた

それをディスクに保存することはできないようです。私は私のアプリケーションを実行すると、私のデスクトップからファイル(test.jpgなど)をアップロードし、サーバーに保存されていることを確認できるようにローカルに保存したいとします(C:\Tempなど)。

私のBeanは非常に単純です:

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

感謝。私は右の一時フォルダにファイルを持っています。ファイルはファイルでありイメージではありません。あなたがそれを宣言したので(InputStream)、あなたはそれをどこにでも使わなかったのです。 – Myy

+0

良いキャッチ。修正しました。 UploadFileがイメージの場合、ファイルはイメージです。 Windowsエクスプローラなどで読み込む場合は、ファイルに適切な拡張子が付いている場合は、画像表示ソフトウェアで開きます。これは、すべてuploadedFile.getFilename()が返すもの(ファイル名に拡張子?を返すかどうか)によって異なります。また、uploadedFile.getContentTypeを使用してmimetypeを返すこともできます。必要に応じて適切な拡張子に変換できるはずです。 –

+0

yay!それはうまくいった!名前に拡張子 '.jpeg'がありませんでした。しかし、何か異常なことが起こった。そのファイルにアクセスしようとすると、Windowsフォトビューアを開きました。「Windows Photo Viewerは、anotehrプログラムによって編集されているため、ファイルを開くことができません」というメッセージが表示されます。だから私はペイントでそれを開こうとしましたが、2-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オブジェクトです、リンクを参照してください –

関連する問題