public static DownloadedFilePartMessage DownloadFilePart(long id, long currentPart, string path)
{
path = Path.GetFullPath(path);
using (var stream = new FileStream(path, FileMode.Open))
{
var totalPart = stream.Length / FilePartSize;
var partSize = currentPart != totalPart ? FilePartSize : stream.Length - FilePartSize * currentPart;
// read only one chunck
var output = new byte[partSize];
stream.Seek(FilePartSize * currentPart, SeekOrigin.Begin);
stream.Read(output, 0, (int)partSize);
return new DownloadedFilePartMessage
{
Id = id,
CurrentPart = currentPart,
Path = path,
TotalPart = totalPart,
RawPart = output
};
}
}