So I am using the below code to ChukUpload a 150MB file and I am getting an error at
var byteRead = fileStream.Read(buffer, 0, (int)ChunkSize);
the exception says its an "cannot access a closed file.". The first chunk is uploading fine but when I enter the loop
"for (ulong idx = 0; idx < numChunks; idx++)" 2nd time I am getting the error at fileStream.Read(buffer, 0, (int)ChunkSize);
using(var fileStream = File.Open(Path.Combine("downloads", title), FileMode.Open)) {
Console.WriteLine("chunked Upload");
//ChunkUpload(remotePath, fileStream, (int)ChunkSize,dbx);
ulong numChunks = (ulong) Math.Ceiling((double) fileStream.Length / (int) ChunkSize);
byte[] buffer = new byte[(int) ChunkSize];
string sessionId = null;
for (ulong idx = 0; idx < numChunks; idx++) {
var byteRead = fileStream.Read(buffer, 0, (int) ChunkSize);
using(var memStream = new MemoryStream(buffer, 0, byteRead)) {
if (idx == 0) {
try {
var result = dbx.Files.UploadSessionStartAsync(false, body: fileStream).Result;
sessionId = result.SessionId;
Console.WriteLine(sessionId);
} catch (Exception ex) {
Console.WriteLine(ex.Message);
}
} else {
var cursor = new UploadSessionCursor(sessionId, (ulong)(int) ChunkSize * idx);
if (idx == numChunks - 1) {
FileMetadata fileMetadata = dbx.Files.UploadSessionFinishAsync(cursor, new CommitInfo(remotePath, mode: WriteMode.Overwrite.Instance), memStream).Result;
Console.WriteLine(fileMetadata.PathDisplay);
} else {
dbx.Files.UploadSessionAppendV2Async(cursor, false, memStream).Wait();
}
}
//}
}
}
}