Преобразование HttpPostedFileBase в байт
В моем приложении MVC я использую следующий код для загрузки файла.
МОДЕЛЬ
public HttpPostedFileBase File { get; set; }
ПОСМОТРЕТЬ
- Массив против связанного списка
- Асинхронный доступ к массиву в Firebase
- Массив размера массива, который отклоняет указатели
- Общие массивы в Java
- Как использовать realloc в функции в C
@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 } }
- Многомерные массивы в Bash
- printf добавляет дополнительный `FFFFFF` к шестнадцатеричной печати из массива char
- Передача массивов в качестве параметров в bash
- Добавить JsonArray в JsonObject
- Разница между массивом int и массивом int
- Как объявить и инициализировать массив в Java?
- Как хранятся 3D-массивы в C?
- Почему Java разрешает массивы размером 0?
Как говорит Дарин, вы можете читать из 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
. Возможно, вы найдете следующее сообщение в блоге .