【问题标题】:Download file from Dropbox using DropNet使用 DropNet 从 Dropbox 下载文件
【发布时间】:2012-10-13 00:28:18
【问题描述】:

我正在尝试下载文件列表,但不确定如何继续。 正如主题所说,我正在使用 DropNet,这是我尝试下载文件的过程:

获取我的应用程序专用文件夹中所有文件的列表,并将它们作为字符串存储在列表中。

然后尝试以下方法:

foreach (string file in files)
{
    _client.GetFileAsync("/" +file,
        (response) =>
        {
            using(FileStream fs = new FileStream(path +file +".gttmp", FileMode.Create))
            {
                for(int i = 0; i < response.RawBytes.Length; i++)
                {
                    fs.WriteByte(response.RawBytes[i]);
                }
                fs.Seek(0, SeekOrigin.Begin);
                for(int i = 0; i < response.RawBytes.Length; i++)
                {
                    if(response.RawBytes[i] != fs.ReadByte())
                    {
                        MessageBox.Show("Error writing data for " +file);
                        return;
                    }
                }
            }
        },
        (error) =>
        {
            MessageBox.Show("Could not download file " +file, "Error!");
        });
}

不幸的是,它似乎根本不起作用。 任何使用 DropNet 的人都可以向我推荐一些可行的方法吗?

【问题讨论】:

    标签: c# dropbox dropbox-api dropnet


    【解决方案1】:

    改用同步方法:

    foreach (string file in files)
    {
        var fileBytes = _client.GetFile("/" + file);
        using (FileStream fs = new FileStream(path +file + ".gttmp", FileMode.Create))
        {
            for (int i = 0; i < fileBytes.Length; i++)
            {
                fs.WriteByte(fileBytes[i]);
            }
            fs.Seek(0, SeekOrigin.Begin);
            for (int i = 0; i < fileBytes.Length; i++)
            {
                if (fileBytes[i] != fs.ReadByte())
                {
                    MessageBox.Show("Error writing data for " + file);
                    break;
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      您的异步下载文件的代码工作正常,我尝试了以下方式,它继续没有错误。

      client.GetFileAsync("/novemberrain.mp3",
                      (response) =>
                      {
                          using (FileStream fs = new FileStream(@"D:\novemberrain.mp3", FileMode.Create))
                          {
                              for (int i = 0; i < response.RawBytes.Length; i++)
                              {
                                  fs.WriteByte(response.RawBytes[i]);
                              }
                          }
                          MessageBox.Show("file downloaded");
                      },
                      (error) =>
                      {
                          MessageBox.Show("error downloading");
                      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-05-12
        • 1970-01-01
        • 1970-01-01
        • 2020-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多