Преобразование HttpPostedFileBase в байт

В моем приложении MVC я использую следующий код для загрузки файла.

МОДЕЛЬ

public HttpPostedFileBase File { get; set; } 

ПОСМОТРЕТЬ

 @Html.TextBoxFor(m => m.File, new { type = "file" }) 

Все работает нормально .. Но я пытаюсь преобразовать результат fiel в байт []. Как я могу это сделать

КОНТРОЛЛЕР

  public ActionResult ManagePhotos(ManagePhotos model) { if (ModelState.IsValid) { byte[] image = model.File; //Its not working .How can convert this to byte array } } 

Как говорит Дарин, вы можете читать из streamа ввода – но я бы не стал полагаться на все доступные данные за один раз. Если вы используете .NET 4, это просто:

 MemoryStream target = new MemoryStream(); model.File.InputStream.CopyTo(target); byte[] data = target.ToArray(); 

Достаточно просто написать эквивалент CopyTo в .NET 3.5, если хотите. Важная часть состоит в том, что вы читаете из HttpPostedFileBase.InputStream .

Для эффективных целей вы можете проверить, является ли возвращенный stream уже MemoryStream :

 byte[] data; using (Stream inputStream = model.File.InputStream) { MemoryStream memoryStream = inputStream as MemoryStream; if (memoryStream == null) { memoryStream = new MemoryStream(); inputStream.CopyTo(memoryStream); } data = memoryStream.ToArray(); } 

Вы можете прочитать его из входного streamа:

 public ActionResult ManagePhotos(ManagePhotos model) { if (ModelState.IsValid) { byte[] image = new byte[model.File.ContentLength]; model.File.InputStream.Read(image, 0, image.Length); // TODO: Do something with the byte array here } ... } 

И если вы намерены напрямую сохранить файл на диск, вы можете использовать метод model.File.SaveAs . Возможно, вы найдете следующее сообщение в блоге .

  • 1D или 2D, что быстрее?
  • Проверить строку для палиндрома
  • Как я могу расширить типизированные массивы в Swift?
  • Почему в Go идут массивы?
  • Как сгруппировать массив объектов по ключу
  • Сортировка массива, связанного с другим массивом
  • Получите все неединственные значения (то есть: дублировать / более одного вхождения) в массиве
  • Сохраняется ли порядок элементов в списке JSON?
  • Можно ли использовать новое место для массивов в переносном режиме?
  • Spark 2.0.x выгружает csv-файл из фрейма данных, содержащего один массив строки типа
  • Получение длины массива 2D-массива в Java
  • Давайте будем гением компьютера.