在服务器上上传大文件?

用户3198603

我需要在服务器上上传文件。可以通过webservice /或UI来完成。我只需要将该文件内容存储在DB中。文件的大小也可以是2到4 GB。我不确定在没有内存不足异常的情况下在服务器上上传大文件的方法是什么?

系统配置:-8 GB,java 7 64位处理器。

斯蒂芬·C

我不确定在没有内存不足异常的情况下在服务器上上传大文件的方法是什么?

这部分很容易。不要将整个文件缓冲在内存中。直接将其流式传输到磁盘。

(伪代码...忽略异常处理和资源管理)

InputStream in = ...
OutputStrean out = ... // the place you want to ultimately store the file

byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = in.read(buffer)) > 0) {
    out.write(buffer, 0, bytesRead);
}

// close streams.

更新

您似乎对如何获取输入流感到困惑。

  • 如果您使用的是Servlet API,则可以使用来获取请求的输入流ServletRequest.getInputStream()

  • 如果您使用不同的API,请具体说明...,我们将为您进行研究。


较困难的部分是处理与上载文件编码,封装等有关的各种问题。为此,最好的方法是寻找现有的解决方案。但这取决于您进行上传的环境;例如,您正在使用哪个Web容器,等等。

这是一个示例:http : //commons.apache.org/proper/commons-fileupload/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章