Codes DeCodes Ответов: 1

Исключение при использовании типа byte[] при проводке из представления в контроллер


В моем проекте MVC я использую viewModel, который имеет свойство типа byte[]. Я использую byte[] для хранения файла изображения, чтобы этот файл можно было передать в модель. Мой взгляд-это строго типизированный взгляд.
Проблема в том, что всякий раз, когда я нажимаю на кнопку отправки, чтобы отправить управление контроллеру, я получаю исключение "
The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters.
.

Как я могу справиться с этим исключением?
Заранее спасибо.

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

Попробовал преобразовать тип byte[] в null в сеттере, но stackoverflow произошел.

Richard MacCutchan

Посмотрите на сообщение об ошибке и выясните, почему ваши данные неверны.

F-ES Sitecore

Разместите соответствующие биты кода и просмотрите их.

1 Ответов

Рейтинг:
0

OriginalGriff

Байтовые массивы и Base64-это не одно и то же: Base 64-это "строковое" представление двоичных данных, которое использует ограниченный набор из 64 печатаемых символов (отсюда и название) для представления одних и тех же данных таким образом, чтобы их можно было легко передавать по текстовым ссылкам, таким как HTML.
Байтовые массивы содержат непосредственно двоичные данные, а это означает полные восьмибитные данные в массиве.

Если ваш метод ожидает данных Base64, вы не можете передать ему двоичные данные изображения и ожидать, что он будет работать, так же как я не могу передать вам копию "войны и мира" в оригинале на русском языке и ожидать, что вы ее прочтете!

Если может быть, что вы можете использовать Преобразовать.Метод ToBase64String (System) | Microsoft Docs[^] чтобы преобразовать его, но так как у меня нет доступа к вашим данным, я не могу сказать отсюда, будет ли это работать - это будет зависеть от содержимого массива байтов.