Member 13956233 Ответов: 2

Получение поврежденного файла при запуске приведенного ниже кода для загрузки файлов. Может ли кто-нибудь предложить мне исправить это?


internal static HttpResponseMessage DownloadFile1(string blobName, string fileName)
{
   HttpResponseMessage response = new HttpResponseMessage();
   string path = @"D:\Project\Newfolder\";
   string filePath = Path.Combine(path + fileName);
   MemoryStream responseStream = new MemoryStream();
   byte[] info = new UTF8Encoding(true).GetBytes(blobName);
   File.SetAttributes(path, FileAttributes.Normal);
   Stream fileStream = System.IO.File.OpenWrite(filePath);
   responseStream.Position = 0;
   fileStream.Write(info, 0, info.Length);
   response.Content = new StreamContent(responseStream);
   string contentDisposition = string.Concat("attachment; filename=", fileName);
   response.Content.Headers.ContentDisposition =
   ContentDispositionHeaderValue.Parse(contentDisposition);
   fileStream.Flush();
   return response;
}


Что я уже пробовал:

Я попытался реструктурировать этот код, но получил сообщение об ошибке, что файл поврежден, когда я попытался восстановить его с помощью SSMS.

2 Ответов

Рейтинг:
2

OriginalGriff

Первое, что нужно проверить, это то, что файл уже поврежден до того, как ваш код загрузки будет задействован?

Начните с загрузки его с помощью браузера и посмотрите, что вы получите. Это работает? Если нет - это ваша проблема.
Если это так, то сравните файл, загруженный вашим кодом, с "оригинальной", известной хорошей версией. Они одного размера? Что в них говорит шестнадцатеричный редактор? Как насчет утилиты сравнения файлов?

Мы не можем исправить код без данных, чтобы запустить его против - так что вам нужно начать накапливать данные, чтобы узнать, как он терпит неудачу - без этого вы просто догадываетесь, в чем проблема!


Рейтинг:
1

Member 14944013

Если вы загружаете с одним и тем же именем файла каждый раз, то ваша проблема связана с файлом.OpenWrite. Файл.Известно, что OpenWrite имеет эту проблему в соответствии с Разделе "примечания" в МС документы, и может быть решена с помощью файла.Открыть с помощью флага Create, согласно этот парень.