delete empty files on failed downloads

This commit is contained in:
rootdarkarchon
2022-12-11 20:42:50 +01:00
parent 189ec03173
commit fc4cee1a3a

View File

@@ -50,23 +50,31 @@ public partial class ApiController
response.EnsureSuccessStatusCode(); response.EnsureSuccessStatusCode();
var fileName = Path.GetTempFileName(); var fileName = Path.GetTempFileName();
var fileStream = File.Create(fileName); try
await using (fileStream.ConfigureAwait(false))
{ {
var bufferSize = response.Content.Headers.ContentLength > 1024 * 1024 ? 4096 : 1024; var fileStream = File.Create(fileName);
var buffer = new byte[bufferSize]; await using (fileStream.ConfigureAwait(false))
var bytesRead = 0;
while ((bytesRead = await (await response.Content.ReadAsStreamAsync(ct).ConfigureAwait(false)).ReadAsync(buffer, ct).ConfigureAwait(false)) > 0)
{ {
ct.ThrowIfCancellationRequested(); var bufferSize = response.Content.Headers.ContentLength > 1024 * 1024 ? 4096 : 1024;
var buffer = new byte[bufferSize];
await fileStream.WriteAsync(buffer.AsMemory(0, bytesRead), ct).ConfigureAwait(false); var bytesRead = 0;
while ((bytesRead = await (await response.Content.ReadAsStreamAsync(ct).ConfigureAwait(false)).ReadAsync(buffer, ct).ConfigureAwait(false)) > 0)
{
ct.ThrowIfCancellationRequested();
progress.Report(bytesRead); await fileStream.WriteAsync(buffer.AsMemory(0, bytesRead), ct).ConfigureAwait(false);
progress.Report(bytesRead);
}
return fileName;
} }
}
return fileName; catch
{
File.Delete(fileName);
throw;
} }
} }