これはこの投稿で触れられていることは知っていますが、これについてさらに明確にすることを望んでいました.
現在、Dropbox Core APIでは、名前が変更されたファイルを追跡する方法はないようです。たとえば、API を使用して Dropbox の app_folder をローカル アプリケーション ディレクトリと同期するとします。Dropbox 側でファイルの名前を変更し、呼び出しdelta
てローカル アプリケーション ディレクトリを更新する方法を確認すると、2 つのエントリが返されます...
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'
)
)
返される配列ごとに、最初の要素は更新が必要なファイルで、2 番目の要素はファイルのメタデータ情報です。2 番目の要素が の場合、null
そのファイルのローカル バージョン (およびディレクトリの場合はその下のすべて) を削除する必要があります。
したがって、上記の例では、最初のファイルを削除して、このまったく新しいファイルをアップロードするように指示しています。残念ながら、作成するように言われたこの新しいファイルが、削除するように言われたファイルの名前が変更されたバージョンであったことを追跡する方法はありません。アプリケーションの観点 (非 Dropbox 側) からは、単純な削除と新しいファイルの受信のように見えます。
これらのファイルにデータを別の場所 (データベースなど) に保存していて、新しいレコードを作成して古いレコードを削除するのではなく、レコードを更新する必要がある場合、これは問題になる可能性があります。
名前の変更後にファイルの関連付けを追跡する方法はありますか? メタデータ、デルタ、またはリビジョンを使用してそれを行う方法が見つからないようです。