我正在创建一个webdav服务器,以便能够轻松地向我们的backoffice软件添加/重新移动文件。
因此,我还实现了put命令,如果我使用windows资源管理器创建文件,这个命令可以正常工作。
然而,当我使用mac os x查找器(借助于传输,但这没有区别)将文件放入服务器时,我没有得到任何内容。
我将fiddler配置为反向代理,这显示了以下请求:

PUT http://localhost:15001/WebDav/test.txt HTTP/1.1
User-Agent: TransmitFSHelper/1.0.2 neon/0.29.3
Connection: TE
TE: trailers
Host: localhost:49416
Content-Length: 0

它不发送任何内容。
我读过一些关于“预告片”、分块编码等的文章,但不知道如何回复客户,让他发送文件内容。

最佳答案

创建新文件(fopen('bla','w'))时,磁盘上首先会出现一个空文件。这就是为什么您看到的初始请求是一个0字节的文件。之后,程序可以追加到文件中,但这将是一个单独的请求。
因此,将0字节文件视为正确的文件,并将创建的201发回。在那之后你应该会看到第二个请求。
然而,有时客户端(如finder)会在http请求中使用分块编码,这是事实。我用php实现了一个webdav服务器,当使用fastcgi和finder时它根本不工作,服务器必须在apache上运行mod_php才能工作。
因此,如果分块请求失败或成功取决于您的堆栈,我就不会知道.net。但至少您应该能够看到2个请求发送到服务器,而不是一个。分块编码问题与此不同。

10-08 13:23
查看更多