通过WebDav以块的形式上传文件

时间:2012-11-27 13:45:57

标签: c# file-upload webdav

我们开发了一个asp.net Web应用程序,它使用ashx处理程序来执行部分文件上传。用户可以通过silverlight控件选择文件,控件启动Post HttpWebRequest到ashx处理程序,并以较小的块(通过HttpWebRequest.BeginGetRequestStream)传输文件,以便silverlight控件可以显示进度条。

现在我们要扩展此解决方案以支持上传到WebDAV文件夹。 所以主要的问题是:这个“大块级”上传是否可以通过WebDAV完成?

2 个答案:

答案 0 :(得分:1)

WebDAV协议是HTTP协议的扩展,因此所有HTTP功能都可以使用它。最好的方法是在上传前计算文件大小 - 这样可以轻松地绘制进度条。

另一种选择是使用允许以块的形式发送数据的Content-Range标头,但这会导致每个块发出一个HTTP GET请求。

JFYI:我们的WebDAVBlackbox允许使用Silverlight中的所有WebDAV功能相对简单。

答案 1 :(得分:0)

我想如果你保持连接打开PUT请求,你可以继续发送数据..你必须确保你没有超时。可能有问题的一点是,许多DAV服务器需要在PUT启动时知道完整的内容长度。

否则,没有标准可以继续添加到文件中,通过多个HTTP请求进行拆分;但也许你的服务器有一个非标准的扩展名。SabreDAV可以。