我知道这在
this post已被触及,但我希望对此有一些额外的澄清.
目前,使用Dropbox Core API,似乎没有办法跟踪已重命名的文件.例如,如果您使用API将Dropbox app_folder与本地应用程序目录同步.您重命名Dropbox端的文件,然后调用delta
以查看如何更新本地应用程序目录,您返回两个条目…
array(
0 => '/somefile.txt',
1 => null
),
array(
0 => '/somefile-renamed.txt',
1 => array(
'revision' => 343
'rev' => 'd90se4c661'
'thumb_exists' => false
'bytes' => 1263
'modified' => 'Tue, 09 Apr 2013 19:06:39 +0000'
'client_mtime' => 'Tue, 09 Apr 2013 18:43:06 +0000'
'path' => string '/somefile-renamed.txt'
'is_dir' => false
'icon' => 'page_white_text'
'root' => 'app_folder'
'mime_type' => 'application/octet-stream'
'size' => '1.2 KB'
)
)
对于返回的每个数组,第一个元素是需要更新的文件,第二个元素是文件元数据信息.如果第二个元素为null,则应删除该文件的本地版本(以及其下的任何内容,如果它是目录).
所以,在上面的例子中,它告诉你删除第一个文件并上传这个全新的文件.不幸的是,没有办法跟踪你被告知要创建的这个新文件实际上只是你被告知要删除的文件的重命名版本.从您的应用程序的角度来看(非Dropbox方面),它看起来像是一个海峡删除和一个新文件.
如果您将数据存储在其他位置(如数据库中)并且需要更新记录而不是创建新记录并删除旧记录,则可能会出现问题.
重命名后是否有一些可接受的跟踪文件关联的方法?我似乎找不到使用元数据,delta或修订版的方法.
最佳答案 我不认为Dropbox知道重命名和删除/添加文件之间的区别.每次我在硬盘驱动器上的本地Dropbox文件夹中重命名文件时,我都会立即看到旧文件重新显示“删除”图标覆盖,而新文件显示“上传”图标.
您可以通过比较已删除和创建的文件的内容(也许还可以比较时间戳)来以合理的准确度检测重命名,但即便如此,也是如此.