Apache 公共文件上传“Streaming API”

Gau*_*wal 4 java file-upload apache-commons

我从 Apache Commons Page 引用 Commons FileUpload

本页面介绍了 commons 文件上传库的传统 API。传统的 API 是一种方便的方法。但是,为了获得最佳性能,您可能更喜欢更快的Streaming API。

我的问题

哪些具体差异Streaming API比 更快traditional API

Alf*_*avo 5

关键的区别在于您处理文件的方式,正如您自己在工厂类中注意到的那样。

获取输入流时,流 API 不会保存在磁盘中。最后,您将能够更快地处理文件(在临时内存上有成本)……但我们的想法是避免将二进制文件保存在磁盘中,除非您真的想要/需要这样做。

之后,您当然可以使用缓冲输入流、字节数组或类似方式将数据保存到磁盘。

编辑:打开流(fileItemStreamElement.openStream () )时的处理程序是一个常见的 InputStream 实例。所以,你的“如果它是一个大文件怎么办”的答案类似于Java 中 InputStream 的内存问题

编辑:流 API 不应保存到磁盘或保存在内存中。它只是提供了一个流,您可以从中读取以将文件复制到您想要的任何位置。这是一种避免使用临时目录并避免分配足够内存来保存文件的方法。这至少应该更快,因为它不会被复制两次,一次从浏览器复制到磁盘/内存,然后再从磁盘/内存复制到你保存它的地方。