У меня есть следующий Javascript-код для преобразования файла в base64:
File.prototype.convertToBase64 = function (callback) {
var FR = new FileReader();
FR.onload = function (e) {
callback(e.target.result)
};
FR.readAsDataURL(this);
}
пример вывода будет:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcUFhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj [...] /j+vigYmLtYx9n0tGzJIyZKIzsYyRRWj0RfdWtCiQdF9rH8f18SMciL7X8DJMySJ8uC4JDRWjH8CEiitULVaMf68GQYn2PvskyciSs26tDWr0ooorsWi0WiFIei0Y/10QkQkWWXo+xaNjetdjHo9YlFdi1eiell6LRj/AGIshIUjcKRej1Ws
Но я не могу расшифровать это с помощью этого:
byte[] data = Convert.FromBase64String(base64Image);
Пишет, что не может распознать расположение данных. Как я могу декодировать данные base64, поступающие из FileReader в JS на С#?
@ Томас, вот и все. Я добавлю это как ответ.
Вы в основном успокаиваете его ответ, отвечая на свой вопрос и отмечая его как правильный ответ, когда @Thomas заслуживает похвалы.
Почему бы вам просто не загрузить файл как двоичный файл? base64 дороже
@Endless есть ли пометка на моем ответе? Есть ли ответ Томаса? Разве я не упомянул Томаса в своем ответе?
@Endless Я использую SignalR в качестве транспорта между Layout и Backend. Загрузка в виде двоичного файла немного сложнее, чем в base64. А для JS клиент конвертирует образ в base64. Процесс сайта останавливается на время конвертации. Так что для меня это не так дорого.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Благодаря Томасу я нашел решение.
C#-декодеру не нравится заголовок: data:image/jpeg;base64,
Вы можете исправить это с помощью этого короткого кода:
int index = base64Image.IndexOf("base64,") + "base64,".Length;
string base64String = base64Image.Remove(0, index);
просто дикая догадка, но я думаю, что декодеру не нравится заголовок data-uri:
data:image/jpeg;base64,