2010-08-26 102 views
1

是一个WebDAV客户端,根据RFC,能够更新文件的修改日期时间戳。 WebDAV将其列为“getlastmodified”属性。 移动文件时,能够对文件执行utime()是非常重要的,因为我将mtime视为基本文件元数据。但是,例如,使用尸体(我认为它是WebDAV的一种参考实现)制作propset时,它不断将getlastmodifed属性映射到其自己的名称空间,从而将该调用从实际的磁盘文件timestamo导向,从而可以通过该文件更新UTIME ...WebDAV:客户端可以修改文件的mtime吗?

例PROPPATCH请求而发送的尸体:

<D:propertyupdate xmlns:D="DAV:"> 
    <D:set> 
    <D:prop> 
    <DAV:getlastmodified xmlns="http://webdav.org/cadaver/custom-properties/">Sun, 06 Nov 1994 08:49:37 GMT</DAV:getlastmodified> 
    </D:prop> 
</D:set> 
</D:propertyupdate> 

我有一个服务器上运行这将更新getlastmodifed属性,只要它没有被映射到不同的命名空间...

+0

示例看起来腥;它似乎没有形成良好(前缀“DAV”似乎没有被宣布)。 – 2012-09-28 16:39:34

回答

0

DAV:getlastmodified属性只能在通常的WebDAV服务器上读取。但是,如果您使用PUTPOST文件进行修改。如果你想稍后修改它,在服务器上实现一些东西,如支持PROPSETlastmodified(请注意丢失的东西),utime()调用可能是一个选项。

例如ownCloud WebDAV服务器就是这样做的。

+0

请注意,这实际上是一个坏主意。如果其他客户端使用If-Modified-Since查找文件是否更改,则可能不再有效。提供另一种财产更好。 – Evert 2014-01-26 22:26:05

1

这听起来像你回答了你自己的问题:

如果你有一个用正确的命名空间发送PROPPATCH的客户端,那么你就不会有这个问题。也许尝试补丁尸体,或者至少解决你要使用的DAV客户端是否展示了这种行为。