2016-12-07 13 views
0

私のアプリケーションデータファイル(SQLiteと環境設定)をAndroidアプリケーションからDropboxアカウントにアップロードするためにDropbox V2 APIを使用しようとしています。私は正常にクライアントを起動することができますDropbox V2 uploadBuilder: "文字列 'path'がパターンと一致しません"

// Dropbox authentication 
config = new DbxRequestConfig("dropbox/liikennevalot"); 
client = new DbxClientV2(config, ACCESS_TOKEN); 

私のアプリは、私のユーザーの資格情報を一覧表示、リンクがアップしていると言う:

FullAccount account = client.users().getCurrentAccount(); 

私は私のアプリDropboxのディレクトリ内のファイルを一覧表示することができます。

ListFolderResult result = client.files().listFolder(""); 
       while (true) { 
        for (Metadata metadata : result.getEntries()) { 
         Log.d("DROPBOX", metadata.getPathLower()); 
        } 
        if (!result.getHasMore()) { 
         break; 
        } 
        result = client.files().listFolderContinue(result.getCursor()); 
       } 

しかし、AndroidからDropboxアプリのルートディレクトリにアップロードしようとすると、

try (InputStream in = new FileInputStream(getExternalFilesDir(null) + "/" + "testi.txt")) { 
        FileMetadata metadata = client.files().uploadBuilder("") 
          .withMode(WriteMode.OVERWRITE) 
          .uploadAndFinish(in); 
       } 

私はclient.files()。uploadBuilder( "")とのコード行を指す例外

java.lang.IllegalArgumentException: String 'path' does not match pattern 

...例外スタックを調べる

を取得し、私はDropboxの中にいることを見つけますAPIのV2、クラスCommitInfoは、私はそのREGEXから任意の意味を作るのに十分なJavaのREGEXを知らないので、私は本当に私にこの例外を発生させているかわからない私は、この例外

} else if(!Pattern.matches("(/(.|[\\r\\n])*)|(ns:[0-9]+(/.*)?)", path)) { 
     throw new IllegalArgumentException("String \'path\' does not match pattern"); 

を与えているコンストラクタを持っています。 Dropbox API V2のドキュメントでは、Dropboxのアプリケーションのルートフォルダを表すので、私のclient.files()。uploadBuilder( "")...は完全な有効なコードでなければなりません。

私のアプリケーションのDropboxディレクトリの下にサブディレクトリ "test"を作成し、そのコードをclient.files()。uploadBuilder( "test")に変更しようとしましたが、毎回同じ例外が発生します。

誰でも私のコードで何が問題なのかを手がかりにするためにREGEXを解釈するのに役立つことができますか?

+0

渡された文字列はパターンと一致しません。 –

+0

良い質問ですが、回答がありません。私はuploadBuilder()メソッドに渡そうとしているものだけを知っています: ""と "test"が例外をトリガーしています。 Dropboxフォルダは普通のフォルダにすぎないので、文字列はWindowsのファイルパスになると思います。 – user3062660

答えて

6

uploadBuilderに渡すパラメータは、ファイルをアップロードするDropbox内のパスにする必要があります。 ""を渡していますが、これはルート自体です。ファイルのアップロードに許可されている場所ではありません。ファイル名が含まれていないためです。

代わりに、"/test.txt"のような値を渡す必要があります。これは、Dropboxに内容を "test.txt"という名前のファイルとしてアップロードするように指示します。

たとえば、"/Documents/test.txt"と指定すると、 "Documents"という名前のフォルダに "test.txt"という名前のファイルがアップロードされます。

+0

それはトリック、感謝百万、グレッグをした! – user3062660

+0

私もこれを打つ。私の問題は、パスを '/'で始める必要があり、 –

関連する問題