我正在创建一个webdav服务器,以便能够轻松地将文件添加/(重新)移动到我们的后台软件。 所以我也在实现PUT命令,如果我使用Windows资源管理器创建文件,那就行了。 然而,当我使用Mac OS X Finder(在Transmit的帮助下,但没有区别)将文件输出到服务器时,我没有得到任何内容。 我将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
它不会发送任何内容。 我已经阅读过有关“预告片”,分块编码等内容的内容,但不知道是否会响应客户端让他发送文件内容。
答案 0 :(得分:2)
创建新文件时(fopen('bla','w'))首先会在磁盘上显示一个空文件。这就是为什么你看到一个0字节文件的初始请求。之后程序可以附加到文件中,但这将是一个单独的请求。
因此将0字节文件视为正确的文件,然后发回201 Created。之后你应该看到一个辅助请求。
然而有时客户端(例如Finder)会在HTTP请求中使用分块编码。我在PHP中实现了一个webdav服务器,在使用FastCGI和Finder时它根本不起作用,服务器必须在带有mod_php的apache上运行才能工作。
因此,如果chunked请求失败或成功取决于你的堆栈,我不会用.NET知道。但至少你应该能够看到2个请求进入服务器,而不是一个。分块编码问题与此分开。