2011-09-19 2 views
1

웹 우퍼 소프트웨어에 파일을 쉽게 추가/(재) 추가 할 수 있도록 webdav 서버를 만들고 있습니다. 그래서 PUT 명령을 구현하고 있는데, Windows 탐색기를 사용하여 파일을 만들면 정상적으로 작동합니다. 그러나 Mac OS X Finder를 사용하면 (전송 기능을 사용하면 아무런 차이가 없습니다) 파일을 서버에 올려 놓을 때 내용이 없습니다. 나는 역방향 프록시로 피들러를 구성, 그리고 나에게 다음과 같은 요청을 보여줍니다 : 그것은 콘텐츠를 전송하지 않습니다apple finder webdav client 내용이없는 파일을 넣습니다.

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 

합니다. '트레일러', 청크 인코딩 등등에 대해 읽었지만 클라이언트에게 응답하여 파일의 내용을 보내도록 와치를 알지 못합니다.

답변

1

새 파일이 생성되면 (fopen ('bla', 'w')) 먼저 비어있는 파일이 디스크에 나타납니다. 이것이 0 바이트 파일로 초기 요청을 보는 이유입니다. 그 후 프로그램이 파일에 추가 할 수 있지만 별도의 요청이됩니다.

따라서 0 바이트 파일을 올바른 것으로 처리하고 201 Created를 다시 보냅니다. 그 다음에 보조 요청이 표시되어야합니다.

그러나 클라이언트 (예 : Finder)가 HTTP 요청에서 청크 분할 인코딩을 사용하는 경우가 종종 있습니다. PHP로 webdav 서버를 구현했습니다. FastCGI와 Finder를 사용할 때 간단히 작동하지 않습니다. 서버는 mod_php가 작동하도록 아파치에서 실행해야합니다.

그래서 청크 요청이 실패하거나 성공하는 경우 스택에 따라 다르지만 .NET에 대해서는 알지 못합니다. 하지만 적어도 두 가지 요청이 하나가 아닌 서버로 전달되는 것을 볼 수 있어야합니다. 청크 분할 인코딩 문제는 그와 별개입니다.

관련 문제