我已经处理这个问题几个小时了,我在 Dropbox 中有 .png 文件,我需要获取这些文件的原始链接,以便我可以在我的代码中使用它。如何在 C# 中检索我在 Dropbox 中的共享链接?我需要检索该链接,以便可以在我的视图中使用它来将其分配给图像的
src
参数。在我的控制器内,我使用 CreateSharedLinkWithSettingsArg
方法为文件创建共享链接,但之后如何获取这些链接?这是我的代码:
List<Dropbox.Api.Files.Metadata> list = new List<Dropbox.Api.Files.Metadata>();
foreach (var item in list)
{
var path = new Dropbox.Api.Sharing.CreateSharedLinkWithSettingsArg(item.PathDisplay);
}
我使用过类似的东西并且效果很好,但是当共享链接已经存在时,此代码会引发异常,因为以下代码始终尝试创建共享链接,我已经共享了所有文件,我只需要获取共享链接我的代码中的链接,我该怎么做?:
var sharing = await client.Sharing.CreateSharedLinkWithSettingsAsync(path);
var src = sharing.Url;
我正在使用 Dropbox.Api v 2.0 和 C#
用于获取现有链接的 C# 代码非常稀缺。即使是关于这个问题的评论中提到的链接现在也已经死了。这是我想出的。如果有的话,它会返回第一个共享链接。如果不存在,则返回“NA”。
public static async Task<string> GetSharedLink(string folder, string fileName)
{
string sharedLink = "NA";
DropboxStuff stuff = new DropboxStuff();
// Depending on your .Net version
ServicePointManager.SecurityProtocol =
SecurityProtocolType.Tls12 |
SecurityProtocolType.Tls11 |
SecurityProtocolType.Tls;
using (var dbx = new Dropbox.Api.DropboxClient(stuff.RefreshToken, stuff.AppKey, stuff.AppSecret))
{
try
{
var link = await dbx.Sharing.ListSharedLinksAsync(folder + "/" + fileName);
// Get the first shared link, if any.
sharedLink = link.Links[0].Url;
// Alternatively, get all links and add them to a List<string>
//foreach (var item in link.Links.Where(i => i.IsFile))
// {
// // linkList.Add(item.Url);
// }
// You will need to return a Task<List<string>> instead of a string
// (or whatever object type you need to return).
}
catch (Exception ex)
{
// Log error
}
}
return sharedLink;
}
DropboxStuff 只是我为保存 Dropbox 凭据而创建的一个类。这对我来说效果相当好。如果您有多个应用程序,我建议将对象传递到 GetSharedLink。这将使在不同的应用程序中使用相同的代码变得更加容易。如果您只有一个 Dropbox 应用,那么上面的代码就可以正常工作。
此外,相关文件只有一个链接。如果有多个链接,可以取消注释代码来循环SharedLinkMetadata并根据需要进行处理。