上载文件到dropbox时,对象引用未设置为实例错误

时间:2016-11-14 09:12:38

标签: c# .net winforms dropbox dropbox-api

我使用以下代码在我的Dropbox中上传文件,并且不断将对象引用设置为对象错误的实例。

DropboxClient client = new DropboxClient("Token");

private void lnklblRunBackUp_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    try
    {
        Task a = Upload(@"C:\Users\HARNESS\Desktop\assm.txt", @"/Apps/ABC");          
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Alert", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        Cursor.Current = Cursors.Default;
    }
}

private async Task Upload(string localPath, string remotePath)  
{
    const int ChunkSize = 4096 * 1024;
    using (var fileStream = File.Open(localPath, FileMode.Open))
    {
        if (fileStream.Length <= ChunkSize)
        {
            await this.client.Files.UploadAsync(remotePath, body: fileStream);
        }
        else
        {
            await this.ChunkUpload(remotePath, fileStream, ChunkSize);
        }
    }
}

private async Task ChunkUpload(String path, FileStream stream, int chunkSize)
{
    int numChunks = (int)Math.Ceiling((double)stream.Length / chunkSize);
    byte[] buffer = new byte[chunkSize];
    string sessionId = null;
    for (var idx = 0; idx < numChunks; idx++)
    {
        var byteRead = stream.Read(buffer, 0, chunkSize);

        using (var memStream = new MemoryStream(buffer, 0, byteRead))
        {
            if (idx == 0)
            {
                var result = await this.client.Files.UploadSessionStartAsync(false, memStream);
                sessionId = result.SessionId;
            }
            else
            {
                var cursor = new UploadSessionCursor(sessionId, (ulong)(chunkSize * idx));

                if (idx == numChunks - 1)
                {
                    FileMetadata fileMetadata = await this.client.Files.UploadSessionFinishAsync(cursor, new CommitInfo(path), memStream);
                    Console.WriteLine(fileMetadata.PathDisplay);
                }
                else
                {
                    await this.client.Files.UploadSessionAppendV2Async(cursor, false, memStream);
                }
            }
        }
    }
}

我在

上收到错误
await this.client.Files.UploadAsync(remotePath, body: fileStream);

我似乎不明白此代码的哪一部分正在发送空值。请帮帮我!

0 个答案:

没有答案