我使用标准的java文件流来上传文件。当我尝试上传25MB大小的zip文件时,花了将近11分钟。但是当我试图在yousendit.com上传文件上传网站时,它花了25秒。以下是我的代码
File file = new File(destination + fileName);
FileOutputStream fileOutputStream = new FileOutputStream(file);
byte[] buffer = new byte[1024];
InputStream in = dataHandler.getDataSource().getInputStream();
int len = in.read(buffer);
while (len != -1) {
fileOutputStream.write(buffer, 0, len);
len = in.read(buffer);
}
fileOutputStream.flush();
fileOutputStream.close();
我没有想法加快上传速度?是否有其他第三方API或任何其他建议?
答案 0 :(得分:1)
您可以将文件拆分为块,并将每个文件上传到单独的线程中。据我所知,HTTP标准定义了特殊的标头,可帮助服务器将块连接在一起。
从Apcahe的FileUpload开始看
答案 1 :(得分:0)
您可以使用flash或html5插件将文件上传到您的服务器,然后对服务器上的文件执行操作,我认为这样会快得多。
答案 2 :(得分:0)
如果软件堆栈在上传时无法达到每秒40kb的吞吐量,那就会出现严重错误。
我建议你增加buffer
的大小。让它大10倍,看看你是否加速。
如果这没有帮助,我建议您对系统进行配置,以尝试确定瓶颈所在。您编写的代码不应该是CPU密集型的。如果是的话,理解原因是有益的。
我的猜测要么是你在代码的“上游”有一个特别糟糕的过滤器......或者说问题根本不在应用程序中,尽管网络团队认为是什么。也许这是虚拟化/虚拟网络的一个问题。