У меня есть большие резервные копии sql, и я хочу сохранить их в Dropbox, но я просто хочу отправить копию в Dropbox и переместить файл на внешний жесткий диск из-за места на жестком диске моего сервера.
Я пытаюсь использовать загрузку фрагментов API Dropbox, и вот пример кода, который они дают.
private async Task ChunkUpload(DropboxClient client, string folder, string fileName)
{
Console.WriteLine("Chunk upload file...");
// Chunk size is 128KB.
const int chunkSize = 128 * 1024;
// Create a random file of 1MB in size.
var fileContent = new byte[1024 * 1024];
new Random().NextBytes(fileContent);
using (var stream = new MemoryStream(fileContent))
{
int numChunks = (int)Math.Ceiling((double)stream.Length / chunkSize);
byte[] buffer = new byte[chunkSize];
string sessionId = null;
for (var idx = 0; idx < numChunks; idx++)
{
Console.WriteLine("Start uploading chunk {0}", idx);
var byteRead = stream.Read(buffer, 0, chunkSize);
using (MemoryStream memStream = new MemoryStream(buffer, 0, byteRead))
{
if (idx == 0)
{
var result = await client.Files.UploadSessionStartAsync(memStream);
sessionId = result.SessionId;
}
else
{
UploadSessionCursor cursor = new UploadSessionCursor(sessionId, (ulong)(chunkSize * idx));
if (idx == numChunks - 1)
{
await client.Files.UploadSessionFinishAsync(cursor, new CommitInfo(folder + "/" + fileName), memStream);
}
else
{
await client.Files.UploadSessionAppendAsync(cursor, memStream);
}
}
}
}
}
}
У меня есть пути к файлам, я хочу загружать свои большие файлы по частям, но просто не смог заставить этот пример кода работать с отправкой пути к файлу. Мои модификации для чтения чанков не сработали, гуглил 2 недели. Наконец-то я хотел спросить об этом.
Как я могу заставить этот метод работать с путем отправки файла и сделать загрузку фрагмента из этого большого файла?
Спасибо с этого момента.