在Java中的Webservice中上传文件太慢了

时间:2013-05-09 09:50:23

标签: java web-services java-ee file-upload

我使用标准的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或任何其他建议?

3 个答案:

答案 0 :(得分:1)

您可以将文件拆分为块,并将每个文件上传到单独的线程中。据我所知,HTTP标准定义了特殊的标头,可帮助服务器将块连接在一起。

从Apcahe的FileUpload开始看

答案 1 :(得分:0)

您可以使用flash或html5插件将文件上传到您的服务器,然后对服务器上的文件执行操作,我认为这样会快得多。

答案 2 :(得分:0)

如果软件堆栈在上传时无法达到每秒40kb的吞吐量,那就会出现严重错误。

我建议你增加buffer的大小。让它大10倍,看看你是否加速。

如果这没有帮助,我建议您对系统进行配置,以尝试确定瓶颈所在。您编写的代码不应该是CPU密集型的。如果是的话,理解原因是有益的。

我的猜测要么是你在代码的“上游”有一个特别糟糕的过滤器......或者说问题根本不在应用程序中,尽管网络团队认为是什么。也许这是虚拟化/虚拟网络的一个问题。