Dropbox.Api无法上传大文件

本文关键字:文件 Api Dropbox | 更新日期: 2023-09-27 18:16:59

我正在使用以下代码上传文件到dropbox。

我正在使用nuget包Dropbox。Api和获取异常System.Threading.Tasks。TaskCanceledException(" task被取消了")

从这个SO问题来看,它似乎是一个超时问题。

那么如何修改下面的代码来设置超时呢?

    public async Task<FileMetadata> UploadFileToDropBox(string fileToUpload, string folder)
    {
        DropboxClient client = new DropboxClient(GetAccessToken());
        using (var mem = new MemoryStream(File.ReadAllBytes(fileToUpload)))
        {
            string filename = Path.GetFileName(fileToUpload);
            try
            {
                string megapath = GetFullFolderPath(folder);
                string megapathWithFile = Path.Combine(megapath, Path.GetFileName(Path.GetFileName(filename))).Replace("''", "/");
                var updated = client.Files.UploadAsync(megapathWithFile, WriteMode.Overwrite.Instance, body: mem);
                await updated;
                return updated.Result;
            }
            catch (Exception ex)
            {
                return null;
            }
        }
    }

Dropbox.Api无法上传大文件

尝试这样创建和初始化客户端:

var config = new DropboxClientConfig();
config.HttpClient.Timeout = new TimeSpan(hr, min, sec); // choose values
var client = DropboxClient(GetAccessToken(), config);
参考:


http://dropbox.github.io/dropbox-sdk-dotnet/html/M_Dropbox_Api_DropboxClient__ctor_1.htm

要记住的另一件事是,UploadAsync将不适用大于150MB的文件。一个将不得不使用UploadSessionStartAsync为基础的实现。我犯了一个错误却没有意识到,我花了很长时间才把问题找出来。