簡體   English   中英

將文件存儲到服務器 - java

[英]Storing a file to server - java

我已經搜索了幾個小時並嘗試了很多例子。 這些都沒有給我一個遠程工作的結果。 我正在使用 eclipse scout 並想簡單地將我的二進制資源從選擇要存儲在目錄中的文件轉換。 在這里,我有一個按鈕,單擊它會提示您選擇要上傳的文件(它們現在只是 PDF),我得到的結果是一個二進制資源列表。 我不知道如何將其寫為輸入流。 如果使用輸入和輸出流不是正確的選擇,我還沒有找到允許我選擇文件並將其存儲到 C://FolderName/FileNameIChoose 的解決方案。

@Order(1750)
        public class UploadReceiptButton extends AbstractButton {
            @Override
            protected String getConfiguredLabel() {
                return TEXTS.get("UploadReceipt");
            }

            @Override
            protected void execClickAction() {
                FileChooser fc = new FileChooser(true);
                List<BinaryResource> data = fc.startChooser();
                System.out.println(data);
                //This is where the data from that file should be stored on my C drive as a file
            }
        }

選擇test.pdf時數據二進制資源的結果為:

 [BinaryResource, content: 260502 bytes, filename: test.pdf, contentType: application/pdf, fingerprint: 1281876091]]

如果有人能指出我正確的方向,那將對我非常有幫助,而且我肯定對很多其他人都有幫助。

BinaryResource對象只是將上傳文件的內容保存在內存中作為byte[]數組,以及一些額外的元數據,例如文件名或 MIME 內容類型。 您可以以任何您喜歡的方式存儲或處理它。

要將其寫入文件,您可以使用庫(例如 Apache Commons)或標准 Java 文件 API。 Scout 還在其IOUtility中提供了一些有用的方法來處理文件。

FileChooser fc = new FileChooser(true);
List<BinaryResource> data = fc.startChooser();
data.forEach(br => {
  String filename = "C:/MyFolder/" + FileUtility.toValidFilename(br.getFilename());
  
  // Scout
  IOUtility.writeContent(filename, br.getContent());
  
  // Java File API (requires at least Java 7)
  try {
    Files.write(Paths.get(filename), br.getContent());
  }
  catch (IOException e) {
    throw BEANS.get(DefaultRuntimeExceptionTranslator.class).translate(e);
  }
});

請注意,這樣做是在運行 UI 服務器的機器上創建一個文件! 如果您的應用程序僅由單個用戶使用或在您的本地計算機上運行,​​這可能很好。 否則,您應該將其存儲在某種數據庫中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM