WebDAV: может ли клиент изменить mtime файла? - PullRequest
1 голос
/ 27 августа 2010

Это клиент WebDAV, согласно RFC, способный обновлять метку времени изменения файла.WebDAV указывает это как свойство "getlastmodified".Возможность перемещать файлы с помощью utime () очень важна при перемещении файлов, так как я считаю mtime существенными метаданными файла.Но, например, выполняя propset с cadaver (который я рассматриваю как своего рода эталонную реализацию WebDAV), он постоянно отображает свойство getlastmodifed в свое собственное пространство имен, таким образом направляя вызов от фактической временной отметки файла на диске, которая может быть обновлена ​​с помощьюutime ...

Пример запроса PROPPATCH, отправленного cadaver:

<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, если только оно не будет сопоставлено с другимПространство имен ...

Ответы [ 3 ]

1 голос
/ 06 ноября 2012

Я использую mydav.php в качестве сервера webdav, а webdrive в качестве клиента webdav (в настройках: установить время изменения файлов после загрузки, чтобы сохранить дату / время).

mydav.php:

https://code.google.com/p/mydav/

webdrive:

http://www.webdrive.com/products/webdrive/index.html

1 голос
/ 07 октября 2010

Мне кажется, что вы ответили на свой вопрос:

Если бы у вас был клиент, который отправил PROPPATCH с правильным пространством имен, у вас не возникло бы этой проблемы.Может быть, попробуйте исправить патч Cadaver, или, по крайней мере, сработает, если клиент DAV, который вы собираетесь использовать, демонстрирует такое поведение.

0 голосов
/ 28 сентября 2012

Свойство DAV:getlastmodified доступно только для чтения на обычных серверах WebDAV. Однако он изменяется, если вы PUT или POST файл. Если вы захотите изменить его позже, возможно, будет реализовано что-то на сервере, например поддержка PROPSET до lastmodified (не обращайте внимания на отсутствующий метод get), который выполняет вызов utime().

Например, сервер ownCloud WebDAV делает это таким образом.

...