有没有办法拆分通过
获得的文件流File.Open("100GB.bin", FileMode.Open, FileAccess.Read, FileShare.Read)
成2个相同大小的子流? 我想将文件部分上传到网站,但是网络服务器对允许发布的最大文件大小有限制。 需要两个流才能将部件同时上传到网站。 提前谢谢。
答案 0 :(得分:1)
如果网站没有提供多部分上传机制,只需将N个字节读入不同的流:
using (var fs = File.Open("100GB.bin", FileMode.Open, FileAccess.Read, FileShare.Read))
{
var chunkSizeInBytes = ...; // whatever you like, below code assumes it's evenly divisible into your 100GB file
var numChunks = fs.Length / chunkSizeInBytes;
var buf = new byte[chunkSizeInBytes];
for (int i = 0, bufIndex = 0; i < numChunks; ++i, bufIndex += chunkSizeInBytes)
{
fs.Read(buf, bufIndex, chunkSizeInBytes);
// if, for whatever reason, you actually need a new stream,
// just create a MemoryStream and use fs.CopyTo(stream, size)
PostMyData(buf);
}
}