Я загружаю части файла (изображение), а затем я хочу сохранить эти части в один файл.Проблема с сегментированным файлом написать
Проблема в том, что первая часть загружается и сохраняется должным образом (я могу видеть часть этой ухищрения). Но, когда вторая часть сохраняется (FileMode.Append), изображение кажется сломанным.
Вот код:
HttpWebRequest webRequest;
HttpWebResponse webResponse;
Stream responseStream;
long StartPosition, EndPosition;
if (File.Exists(LocalPath))
fileStream = new FileStream(LocalPath, FileMode.Append);
else fileStream = new FileStream(LocalPath, FileMode.Create);
webRequest = (HttpWebRequest)WebRequest.Create(FileURL);
webResponse = (HttpWebResponse)webRequest.GetResponse();
responseStream = webResponse.GetResponseStream();
StartPosition = 0; //download first 52062 bytes of the file
EndPosition = 52061;
webRequest.AddRange(StartPosition, EndPosition);
int SeekPosition = (int)StartPosition;
while ((bytesSize = responseStream.Read(Buffer, 0, Buffer.Length)) > 0)
{
lock (fileStream)
{
fileStream.Seek(SeekPosition, SeekOrigin.Begin);
fileStream.Write(Buffer,0, bytesSize);
}
//the Buffer.Length is 2048.
//When the bytes count to download is < 2048 then I decrease the Buffer.Length
//to prevent downloading more that 52062 bytes.
DownloadedBytesCount += bytesSize;
SeekPosition += bytesSize;
long TotalToDownload = EndPosition - StartPosition;
long bytesLeft = TotalToDownload - DownloadedBytesCount;
if (bytesLeft < Buffer.Length)
Buffer = new byte[bytesLeft];
}
, когда я хочу, чтобы загрузить вторую часть файла я поставил
StartPosition = 52062;
EndPosition = 104122;
, а затем есть проблема, которую я описал выше. Почему файл не установлен правильно?
Что означает «кажется сломанным»? Не используйте FileMode.Append. –
Когда я пытаюсь открыть эту картинку после записи второй части, я не вижу ее содержимого. – Tony
Ваш код настолько ошибочен, что я даже не знаю с чего начать. Зачем вам загружать файл по частям? – dtb