Dropbox V2 uploadBuilder:" String' path'与模式不匹配"

时间:2016-12-07 14:21:12

标签: java android regex dropbox

我尝试使用Dropbox V2 API将我的应用数据文件(SQLite和偏好设置)从我的Android应用上传到我的Dropbox帐户。我可以成功启动客户端:

// 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);
                }

我得到了一个例外

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

指向client.files()。uploadBuilder("")...

的代码行

检查异常堆栈,我发现在Dropbox API V2中,类CommitInfo有一个构造函数,它给了我这个异常

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

我不知道从那个REGEX中获得足够的Java REGEX,所以我真的不知道是什么导致了我这个异常。 Dropbox API V2文档说""表示应用程序在Dropbox中的根文件夹,所以我的client.files()。uploadBuilder("")...应该是完美的有效代码。

我还试图创建一个子目录" test"在我的应用程序的Dropbox目录下,将代码更改为client.files()。uploadBuilder(" test")...但每次都会得到相同的异常。

任何人都可以帮我解释那个REGEX,这样可以给我一个关于我的代码有什么问题的线索吗?

1 个答案:

答案 0 :(得分:11)

您传递给uploadBuilder的参数应该是Dropbox中要上传文件的路径。您正在传递""这是根本身,它不是文件上传的允许位置,因为它不包含文件名。

相反,你应该传递一个像"/test.txt"这样的值,它会告诉Dropbox将内容上传为名为" test.txt"的文件。在根。

或者,例如,如果您指定"/Documents/test.txt",它将上传为名为" test.txt"的文件。在名为" Documents"。

的文件夹中