4

これはこの投稿で触れられていることは知っていますが、これについてさらに明確にすることを望んでいました.

現在、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 側) からは、単純な削除と新しいファイルの受信のように見えます。

これらのファイルにデータを別の場所 (データベースなど) に保存していて、新しいレコードを作成して古いレコードを削除するのではなく、レコードを更新する必要がある場合、これは問題になる可能性があります。

名前の変更後にファイルの関連付けを追跡する方法はありますか? メタデータ、デルタ、またはリビジョンを使用してそれを行う方法が見つからないようです。

4

4 に答える 4

3

Dropbox はファイルの名前変更と削除/追加の違いを認識していないと思います。ハード ドライブのローカル Dropbox フォルダにあるファイルの名前を変更するたびに、古いファイルが「削除済み」アイコン オーバーレイで再表示され、新しいファイルには「アップロード中」アイコンが表示されます。

削除されたファイルと作成されたファイルの内容を比較することで (おそらくタイムスタンプも比較することで) 妥当な精度で名前変更を検出できるかもしれませんが、それでも不確実です。

于 2013-04-11T14:21:28.000 に答える
0

client_mtime とファイルサイズの名前が変更されていないため、名前が変更されたファイルを見つけることができます。ハックのようなものですが、ハッシュをチェックするより簡単です。

于 2014-10-29T15:53:38.120 に答える
0

残念ながら、Dropbox API を介してファイルの名前変更を追跡する唯一の方法は、追跡する必要があるすべてのファイルのコンテンツ ハッシュを保存することです。

名前の変更を検出する方法は次のとおりです。

  1. /deltaDropbox から電話を切るように言われるまで電話します。

  2. 変更の完全なリストができたので、このファイルのリストを次のようにフィルター処理します。

    • 更新されたファイル
    • 削除されたファイル
    • 新しいファイル
  3. 新しい各ファイルの内容を読み取り、その内容をハッシュします。

  4. 削除されたファイルごとに、保存したハッシュを検索し、これを新しい各ファイルのハッシュと照合します。2 つのハッシュが一致する場合、ファイルの名前は変更されています。

注: この手法は、ユーザーが変更した瞬間にファイルのハッシュを更新できる場合にのみ機能します。これは、アプリが Dropbox Webhook を使用していて、ユーザーが編集せずオフラインでファイルを移動する場合に可能です。

Dropbox が最終的に API を通じてファイルの名前変更を公開することを願っています。

于 2014-08-22T21:03:21.877 に答える
-1

ドロップボックスにファイルがあり、その名前を変更したい場合は、このロジックに従うだけで問題が解決します。

  1. ファイルの名前を取得して変更し、変更した名前を文字列変数に格納します。
  2. 元のファイルの親パスを保持します。
  3. Name get from String 変数を変更して、ファイルを別の場所に移動します。
  4. ファイルを新しい場所から古い場所に戻し、
                 How to do it Programatically,
  Entry global_file;//assign any file to it 
  String FilePath=global_file.path;
  String parent_path=global_file.parentPath();//Keep parent path 

    String ChanageName= "Your changed Name";
    parent_path=parent_path+""+ChanageName; //setting path for renamed file to move to its original place.


    Entry RenamedFile    = mApi.move(FilePath, "/"+ChanageName);  //move to new place "/"
    Entry MoveRenameFile = mApi.move(RenamedFile.path,parent_path); //move to previous location
于 2014-04-13T20:03:39.343 に答える