問題: 必要なフォルダーの GetMetaData がルート フォルダーのメタデータを返します。
背景: Dropbox Web インターフェイスからダウンロードするには大きすぎる (数千のファイルと数 GB) フォルダーをダウンロードするための小さなアプリを作成しようとしています。指定されたディレクトリのサブディレクトリを再帰的に試行し、すべてのファイルをダウンロードします。
実際に起こるのは無限ループです。アプリは (誤って) ルート フォルダーのメタデータを取得し、必要なディレクトリに到達するまでディレクトリを反復処理し、受信したメタデータ セットであるルート ディレクトリの処理を開始します。
ディレクトリ名「/Apps」は正常に機能しますが、必要なものは機能しません。フォルダー名には、「/XYX_DataFolder」のように、アンダースコアと大文字と小文字が混在しています (その他の文字は含まれません)。
私のアプリには「完全な Dropbox」権限があり、API キーを取得したアカウントで承認しました。
ディレクトリ名を変更することは、私にとってオプションではありません。
私は VS2012 を使用しており、DropNet は NuGet を介して追加されました。
この問題に関するご意見は大歓迎です。ありがとう!
編集:
ランタイム バージョン v4.0.30319 バージョン 1.10.23.0
参照用に Visual Studio のプロパティ ページで報告されているとおりです。
どちらが正常に機能するかを承認してから、以下のコードを使用します。一部のディレクトリは正常に機能しますが、上記のフォルダーで GetMetaData を実行しようとすると、ルート フォルダーからメタデータが取得されます。
private void DownloadDirectory( string serverDirectory, string clientDirectory ) {
var meta = m_client.GetMetaData( serverDirectory, false, false );
foreach ( var item in meta.Contents ) {
var destinationPath = Path.Combine( clientDirectory, item.Name );
if ( item.Is_Dir && item.Path == m_serverRootDirectory ) {
DownloadDirectory( item.Path, destinationPath );
}
else {
//var fileBytes = m_client.GetFile( item.Path );
//File.WriteAllBytes( destinationPath, fileBytes );
//textBox1.Text += Environment.NewLine + destinationPath;
}
}
}