加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Dropbox V2 uploadBuilder:“字符串’路径’与模式不匹

发布时间:2020-12-15 04:48:33 所属栏目:Java 来源:网络整理
导读:我正在尝试使用Dropbox V2 API将我的应用程序数据文件(SQLite和首选项)从我的 Android应用程序上传到我的Dropbox帐户.我可以成功启动客户端: // Dropbox authenticationconfig = new DbxRequestConfig("dropbox/liikennevalot");client = new DbxClientV2(c
我正在尝试使用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 app根目录时

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("(/(.|[rn])*)|(ns:[0-9]+(/.*)?)",path)) {
        throw new IllegalArgumentException("String 'path' does not match pattern");

我不知道从那个REGEX有什么意义的Java REGEX,所以我真的不知道是什么导致我这个例外. Dropbox API V2文档说“”表示应用程序在Dropbox中的根文件夹,因此我的client.files().uploadBuilder(“”)…应该是完美的有效代码.

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

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

解决方法

您传递给uploadBuilder的参数应该是Dropbox中要上传文件的路径.您传入的是“”本身,它不是文件上传的允许位置,因为它不包含文件名.

相反,您应该传入一个像“/test.txt”这样的值,这将告诉Dropbox将内容上传为root中名为“test.txt”的文件.

或者,例如,如果指定“/Documents/test.txt”,它将作为名为“test.txt”的文件上载到名为“Documents”的文件夹中.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读