Я пытаюсь загрузить файлы на Azure файлообменник, используя библиотеку Azure .Storage.Files.Shares.
Если я не разделяю файл (сделав один вызов UploadRange ) это работает нормально, но для файлов более 4 Мб я не смог заставить работать чанкинг. При загрузке файл имеет тот же размер, но не открывается в программе просмотра.
Я не могу установить меньшие значения HttpRanges для большого файла, так как получаю ошибку «тело запроса слишком велико», поэтому я Я разделяю файловый поток на несколько мини-потоков и загружаю весь HttpRange каждого из них
ShareClient share = new ShareClient(Common.Settings.AppSettings.AzureStorageConnectionString, ShareName());
ShareDirectoryClient directory = share.GetDirectoryClient(directoryName);
ShareFileClient file = directory.GetFileClient(fileKey);
using(FileStream stream = fileInfo.OpenRead())
{
file.Create(stream.Length);
//file.UploadRange(new HttpRange(0, stream.Length), stream);
int blockSize = 128 * 1024;
BinaryReader reader = new BinaryReader(stream);
while(true)
{
byte[] buffer = reader.ReadBytes(blockSize);
if (buffer.Length == 0)
break;
MemoryStream uploadChunk = new MemoryStream();
uploadChunk.Write(buffer, 0, buffer.Length);
uploadChunk.Position = 0;
file.UploadRange(new HttpRange(0, uploadChunk.Length), uploadChunk);
}
reader.Close();
}
Код выше загружает без ошибок, но при загрузке изображения из Azure оно повреждено.
У кого-нибудь есть идеи? Спасибо за любую помощь, вы можете предоставить.
ура
Стив