首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >上传相同的文档到Dropbox .NET SDK

上传相同的文档到Dropbox .NET SDK
EN

Stack Overflow用户
提问于 2017-01-11 00:39:03
回答 2查看 424关注 0票数 0

我有一个web API函数,它可以成功地将文件上传到Dropbox (使用他们新的.NET SDK),然后获得上传文件的共享链接(每个文件一次)。

代码语言:javascript
运行
复制
private async Task<string> Upload(DropboxClient dbx, string localPath, string remotePath)
    {
        const int ChunkSize = 4096 * 1024;
        using (var fileStream = File.Open(localPath, FileMode.Open))
        {
            if (fileStream.Length <= ChunkSize)
            {
                WriteMode mode = new WriteMode();

                FileMetadata fileMetadata = await dbx.Files.UploadAsync(remotePath, body: fileStream, mode: mode.AsAdd, autorename: true);
                //set the expiry date
                var settings = new SharedLinkSettings(expires: DateTime.Today.AddDays(7));

                SharedLinkMetadata sharedLinkMetadata = await dbx.Sharing.CreateSharedLinkWithSettingsAsync(fileMetadata.PathLower, settings);
                return sharedLinkMetadata.Url;
            }
            else
            {
                await this.ChunkUpload(dbx, remotePath, fileStream, ChunkSize);
            }
            return "error";
        }
    }

这通常很好用,但当我上传完全相同的文档(名称和内容)两次时,没有任何反应,我确实需要将这两个文件存储在我的Dropbox帐户中。

它可以是需要的尽可能多的相同文档(不只是两个),我最好的方案是有第二个文档(第三个等等)。自动重命名并上传到Dropbox。

有没有关于如何做到这一点的想法?

EN

Stack Overflow用户

回答已采纳

发布于 2017-01-11 19:31:35

我把答案贴出来,也许它会帮助一些人..我花了很长时间才弄明白。

这是检查文件是否已经存在于Dropbox中的代码。

如果该文件存在,它会检查该文件是否共享了一个链接,并根据结果生成/检索一个/共享链接。

代码语言:javascript
运行
复制
private async Task<string> Upload(DropboxClient dbx, string localPath, string remotePath)
    {
        const int ChunkSize = 4096 * 1024;
        using (var fileStream = File.Open(localPath, FileMode.Open))
        {
            if (fileStream.Length <= ChunkSize)
            {
                WriteMode mode = new WriteMode();
                FileMetadata fileMetadata = await dbx.Files.UploadAsync(remotePath, body: fileStream, mode: mode.AsAdd, autorename: true);
                //set the expiry date
                var existingDoc = await dbx.Files.GetMetadataAsync(remotePath);
                if (existingDoc.IsFile)
                {
                    var sharedLink = await dbx.Sharing.ListSharedLinksAsync(remotePath);
                    var settings = new ListSharedLinksArg(remotePath);
                    ListSharedLinksResult listSharedLinksResult = await dbx.Sharing.ListSharedLinksAsync(remotePath);
                    if (listSharedLinksResult.Links.Count > 0)
                    {
                        return listSharedLinksResult.Links[0].Url;
                    }
                    else
                    {
                        var sharedLinkSettings = new SharedLinkSettings(expires: DateTime.Today.AddDays(7));
                        SharedLinkMetadata sharedLinkMetadata = await dbx.Sharing.CreateSharedLinkWithSettingsAsync(remotePath, sharedLinkSettings);
                        return sharedLinkMetadata.Url;
                    }
                }
                else
                {
                    var settings = new SharedLinkSettings(expires: DateTime.Today.AddDays(7));
                    SharedLinkMetadata sharedLinkMetadata = await dbx.Sharing.CreateSharedLinkWithSettingsAsync(fileMetadata.PathLower, settings);
                    return sharedLinkMetadata.Url;
                }
            }
            else
            {
                var sharedLink = await this.ChunkUpload(dbx, remotePath, fileStream, ChunkSize);
                return sharedLink;
            }
        }
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41573807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档