我的网站接受上传文件。文件可以通过WebDAV (PUT)或POST上传。对于POST,我的HttpModule截取请求并将POST的正文保存到服务器上的一个文件中。对于PUT,WebDAV处理文件的创建。
我的HttpModule还在其OnEndRequest事件处理程序中记录每个文件上传。
我发现对于PUT (WebDAV)两者都是如此
ctx.Request.Headers["Content-Length"]
ctx.Request.ContentLength总是等于零,尽管对于POSTs,这两个值都包含正文内容的长度。
要通过WebDAV上传文件的长度,我需要做什么?
发布于 2019-05-17 00:21:50
当我写这篇文章的时候,我意识到对于PUT,我知道被放到服务器上的文件的名称。所以我用下面的代码解决了这个问题:
if (ctx.Request.ContentLength == 0)
{
if (ctx.Request.HttpMethod == "PUT")
{
FileInfo fi = new FileInfo(ctx.Items["OutFile"].ToString());
fileSize = fi.Length;
}
}
else
{
fileSize = ctx.Request.ContentLength;
}(其中ctx.Items"OutFile“是我从上一个事件处理程序中保留的文件名。)
所以这对我来说是有效的。尽管如此,如果能够获得这些信息而不必访问文件系统,那将是一件很好的事情。如果您知道如何从当前正在执行的http事务的上下文中获取它,我将非常感谢您的建议。
https://stackoverflow.com/questions/56172835
复制相似问题