У меня есть запланированное веб-задание, которое запускается каждые 5 минут.
- Он проверяет наличие файлов в общей папке Azure с помощью библиотек ShareClient.
- Если файлы доступны, веб-задание загружает файл и удаляет исходный файл.
- Поэтому, когда большой файл загружается с портала в общий файловый ресурс (> 2 ГБ для загрузки требуется ~ 1 минута, а общий файловый ресурс не подключен)
- И одновременно WebJob запускается и начинает работать, WebJob находит загружаемый файл и загружает часть содержимого файла, которое было загружено до этого времени.
- Остальной контент не загружается.
Как я могу загрузить весь файл в этом сценарии? Можно ли загрузить файл только после его полной загрузки?
Образец кода:
var shareItems = shareDirectory.GetFilesAndDirectories().Where(item => item.IsDirectory == false).ToList();
foreach (var item in shareItems)
{
ShareFileClient file = shareDirectory.GetFileClient(item.Name);
if (await file.ExistsAsync())
{
string filePath = Path.Combine(destPath, item.Name);
using (FileStream stream = File.OpenWrite(filePath))
{
try
{
ShareFileDownloadInfo download = await file.DownloadAsync();
download.Content.CopyTo(stream);
}
catch (Exception ex)
{
throw;
}
stream.Flush();
stream.Close();
}
}
//Delete the original file from file share
file.Delete();
}