首页 > 解决方案 > 使用 Dropbox API 为 Dropbox 中的所有文件创建可共享链接

问题描述

我的 Dropbox 帐户中有大约 100 个文件,我正在尝试使用 Dropbox API 为所有文件创建可共享链接。

尝试使用 DbxClient = new DbxClient(config, accessToken); client.createShareableUrl(path); DbxClient但在找不到符号或找不到类时出错。

import com.dropbox.core.DbxRequestConfig;
import com.dropbox.core.v2.*;
import static com.dropbox.core.v2.files.AlphaGetMetadataError.path;
import com.dropbox.core.v2.files.FileMetadata;
import com.dropbox.core.v2.files.ListFolderResult;
import com.dropbox.core.v2.files.Metadata;
import com.dropbox.core.v2.sharing.RequestedVisibility;
import com.dropbox.core.v2.sharing.SharedLinkMetadata;
import com.dropbox.core.v2.sharing.SharedLinkSettings;
import com.dropbox.core.v2.users.FullAccount;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;



public class DBX {

    static boolean doYouWantMeToUpload = false;

    private static final String ACCESS_TOKEN = "My access token here I removed it";

    public static void main(String args[]) throws DbxException, FileNotFoundException, IOException {
        // Create Dropbox client
        DbxRequestConfig config = DbxRequestConfig.newBuilder("dropbox/java-tutorial").build();
        DbxClientV2 client = new DbxClientV2(config, ACCESS_TOKEN);

        // Get current account info
        FullAccount account = client.users().getCurrentAccount();
        System.out.println(account.getName().getDisplayName());

        if(doYouWantMeToUpload == true){
            // Get files and folder metadata from Dropbox root directory
            ListFolderResult result = client.files().listFolder("");
            while (true) {
                for (Metadata metadata : result.getEntries()) {
                    System.out.println(metadata.getPathLower());
                }

                if (!result.getHasMore()) {
                    break;
                }

                result = client.files().listFolderContinue(result.getCursor());
            }

            // Upload "test.txt" to Dropbox
            try (InputStream in = new FileInputStream("test.txt")) {
                FileMetadata metadata = client.files().uploadBuilder("/test.txt")
                    .uploadAndFinish(in);
            }

            // Get shareable link for a file
            DbxClient = new DbxClient(config, ACCESS_TOKEN);
            client.createShareableUrl(test.txt);



        }
    }
}

我想为我的 Dropbox 中的所有文件获取可共享的链接。我在 Dropbox GitHub 中按照这些说明进行操作。

标签: javadropboxdropbox-api

解决方案


您正在尝试使用旧createShareableUrl的 Dropbox API v1,它现已退役。

您应该使用 Dropbox API v2,via DbxClientV2,就像您对代码中的其他调用所做的那样。

具体来说,要创建共享链接,您应该使用createSharedLinkWithSettings. 这看起来像:

DbxClientV2 client = new DbxClientV2(config, ACCESS_TOKEN);

client.sharing().createSharedLinkWithSettings(path);

推荐阅读