[英]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.