繁体   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