亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在JSF中保存上傳的文件

如何在JSF中保存上傳的文件

Helenr 2019-07-03 17:10:38
如何在JSF中保存上傳的文件我正在JSF中上傳一個文件。我用的是戰斧<t:inputFileUpload>對于這一點,但同樣的問題適用于例如PrimeFaces<p:fileUpload>和JSF 2.2<h:inputFile>.我有以下支持bean代碼:private UploadedFile uploadedFile; // +getter+setterpublic String save() throws IOException {     String name = uploadedFile.getName();     System.out.println("File name: " + name);     String type = uploadedFile.getContentType();     System.out.println("File type: " + type);     long size = uploadedFile.getSize();     System.out.println("File size: " + size);       InputStream stream = uploadedFile.getInputStream();     byte[] buffer = new byte[(int) size];       stream.read(buffer, 0, (int) size);       stream.close();  }我能夠獲得文件名、類型和大小,但無法將該文件保存在特定路徑上。我想不出保存上傳文件的正確方法。我怎樣才能做到這一點?
查看完整描述

3 回答

?
HUX布斯

TA貢獻1876條經驗 獲得超6個贊

這個getInputStream()方法表示文件內容。

InputStream input = uploadedFile.getInputStream();

你需要把它復制到一個文件中。首先,應在本地磁盤文件系統上準備一個文件夾,將上傳的文件存儲在該文件夾中。例如,/path/to/uploads(在Windows上,這將與服務器運行的磁盤相同)。注意你應該絕對不是使用相對路徑或getRealPath()基于這里提到的原因上傳的圖像只有在刷新頁面后才可用.

然后,您需要自動生成文件名。否則,當其他人稍后上傳同名文件時,它將被覆蓋。你可以用Files#createTempFile()獲取自動生成的文件名的工具。

Path folder = Paths.get("/path/to/uploads");String filename = FilenameUtils.getBaseName(uploadedFile.getName());
 String extension = FilenameUtils.getExtension(uploadedFile.getName());
 Path file = Files.createTempFile(folder, filename + "-", "." + extension);

如果有必要,上傳路徑可以根據以下問答中所示的幾種方式之一進行參數化:推薦在servlet應用程序中保存上傳的文件的方法..這個FilenameUtils是ApacheCommonsIO的一部分,因為它是Tomahawk文件上載組件的依賴項,所以您應該在類路徑中擁有它。

最后,只需將上傳的文件流到該文件(假設Java 7):

try (InputStream input = uploadedFile.getInputStream()) {
    Files.copy(input, file, StandardCopyOption.REPLACE_EXISTING);}System.out.println("Uploaded file successfully saved in " + file);

然后,要下載回來,最簡單的方法就是注冊。/path/to/uploads作為一個新的webapp上下文或虛擬主機,這樣所有這些文件都可以通過URL獲得。另見使用<h:GraphicImage>或<img>標記從webapp/webtext/Deploy文件夾外部加載圖像.


查看完整回答
反對 回復 2019-07-03
  • 3 回答
  • 0 關注
  • 545 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號