我正在使用milton服务器在我的项目中支持webdav协议,但是存在问题。 这是我的上传(PUT)方法代码:
public DavFile upload(InputStream is, String name) {
DavFile davFile = null;
if (is != null) {
File newFile = new File(name);
BufferedOutputStream os = null;
byte[] buffer = new byte[1024 * 1024];
int size;
try {
os = new BufferedOutputStream(new FileOutputStream(newFile, false), buffer.length);
while ((size = is.read(buffer)) > 0) {
System.out.println("Log: " + name + " | " + size);
os.write(buffer, 0, size);
}
Util.closeOutputStream(os);
davFile = new DavFile(newFilePath);
} catch (Exception ex) {
Util.writeLog(ex);
} finally {
Util.closeInputStream(is);
Util.closeOutputStream(os);
}
}
return davFile;
}
这是输出:
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 7834
Log: 722267_119335884931029_2021941220_n.mp4 | 3145
如何增加milton服务器中InputStream的读取大小?我无法将InputStream更改为任何其他类型,如BufferedInputStream!
在我的本地计算机中,上传速度是27KB / s,这太慢了!!!
答案 0 :(得分:3)
没有理由为什么代码应该快或慢。将按照网络适配器提供的速率接收字节,并使用BufferedInputStream获得帮助,因为网络适配器已经有效地使用了字节。
我非常惊讶地看到本地上传速度为27KB / s,我以前从未见过那么慢的东西。
我刚刚对milton服务器进行了快速测试,我目前正在处理哪些文件处理非常复杂的文件,包括分块和SHA1计算,它给出了以下结果: 上传时间= 8541ms SIZE = 82,954,392bytes 带宽= 9,712,491bytes / sec
您是如何测试上传速度的,是来自客户端还是服务器?由于客户端在实际上传之前和之后所做的所有PROPFIND请求的高延迟,有时从客户端测量时,上传速度显然会很慢。但这不应该是大文件的一个因素(例如50Mb或更多)。
如果您正在使用Win7进行测试,请确保已启用Cookie身份验证,否则Windows将每次上传两次,首先不使用凭据,然后再使用凭据。
/布拉德
答案 1 :(得分:0)
“Milton,一个在Java Servlet中实现的开源WebDAV库,它允许应用程序中的任何数据通过WebDAV公开。这里有一个使用Milton,Hibernate和Tomcat的例子,其中Milton运行在Tomcat上,用于提供基于WebDAV的Hibernate数据访问。其他基于Java的WebDAV项目在构建自己的项目时可能很有用,包括Jigsaw,Apache Jackrabbit和现已退役的Jakarta Slide。“
基于此,如果Milton确实在Tomcat服务器上运行,您可以尝试在tomcat中启用gzip压缩。