【发布时间】:2018-12-27 13:59:48
【问题描述】:
我正在尝试将大文件分块上传到第 3 部分服务。但我对最后一块有问题。最后一个块总是小于 5mb,但所有块包括。最后一个大小相同 - 5mb 我的代码:
int chunkSize = 1024 * 1024 * 5;
using (Stream streamx = new FileStream(file.Path, FileMode.Open, FileAccess.Read))
{
byte[] buffer = new byte[chunkSize];
int bytesRead = 0;
long bytesToRead = streamx.Length;
while (bytesToRead > 0)
{
int n = streamx.Read(buffer, 0, chunkSize);
if (n == 0) break;
// do work on buffer...
// uploading chunk ....
var partRequest = HttpHelpers.InvokeHttpRequestStream
(
new Uri(endpointUri + "?partNumber=" + i + "&uploadId=" + UploadId),
"PUT",
partHeaders,
buffer
); // upload buffer
bytesRead += n;
bytesToRead -= n;
}
streamx.Dispose();
}
缓冲区在 3rd 方服务上上传。
【问题讨论】:
-
简短的回答是您应该上传
n字节,而不是chunkSize字节。 -
不清楚
chunkSize来自哪里,但应该是streamx.Read(buffer, 0, buffer.Length); -
错误在
// do work on buffer...或// uploading chunk ....- 你需要向我们展示该代码。 -
@mjwills 添加上传块的方法,谢谢
-
不要上传
buffer- 只是它的第一个n字节。
标签: c# upload chunks image-file