.NET Dropbox API 分块下载大文件
.NET Dropbox API download large file in chunks
我需要从 Dropbox 下载超过 100GB 的大文件。为此,我正在使用 Dropbox .NET API。
为了以块的形式进行这种操作,我调用了 GetContentAsStream
方法,如下所示:
var response = await client.Files.DownloadAsync(filePath);
using (var stream = await response.GetContentAsStreamAsync())
{
var length = await stream.ReadAsync(buffer, 0, bufferSize, token);
// Append to local file.
}
大约 5GB 后我得到错误:Unable to read data from the transport connection: The connection was closed.
是否有任何明确的方法来下载指定偏移量和字节数的 Dropbox 文件块?这样我就可以重试或从我需要的位置继续。
API v2 /2/files/download HTTPS 端点本身确实支持 "Range Retrieval Requests",但遗憾的是目前尚未在 Dropbox .NET SDK 中实现。我会将其作为功能请求一起发送,但我不能保证 if/when 会在那里实施。
既然如此,您可以直接在 SDK 之外实现 HTTPS 调用,这样您就可以设置所需的 Range
header.
我需要从 Dropbox 下载超过 100GB 的大文件。为此,我正在使用 Dropbox .NET API。
为了以块的形式进行这种操作,我调用了 GetContentAsStream
方法,如下所示:
var response = await client.Files.DownloadAsync(filePath);
using (var stream = await response.GetContentAsStreamAsync())
{
var length = await stream.ReadAsync(buffer, 0, bufferSize, token);
// Append to local file.
}
大约 5GB 后我得到错误:Unable to read data from the transport connection: The connection was closed.
是否有任何明确的方法来下载指定偏移量和字节数的 Dropbox 文件块?这样我就可以重试或从我需要的位置继续。
API v2 /2/files/download HTTPS 端点本身确实支持 "Range Retrieval Requests",但遗憾的是目前尚未在 Dropbox .NET SDK 中实现。我会将其作为功能请求一起发送,但我不能保证 if/when 会在那里实施。
既然如此,您可以直接在 SDK 之外实现 HTTPS 调用,这样您就可以设置所需的 Range
header.