Декодировать Javascript FileReader Base64 в C#

У меня есть следующий 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 на С#?

просто дикая догадка, но я думаю, что декодеру не нравится заголовок data-uri: data:image/jpeg;base64,

Thomas 17.06.2019 21:40

@ Томас, вот и все. Я добавлю это как ответ.

Snickbrack 17.06.2019 21:40

Вы в основном успокаиваете его ответ, отвечая на свой вопрос и отмечая его как правильный ответ, когда @Thomas заслуживает похвалы.

Endless 18.06.2019 15:49

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

Endless 18.06.2019 15:50

@Endless есть ли пометка на моем ответе? Есть ли ответ Томаса? Разве я не упомянул Томаса в своем ответе?

Snickbrack 19.06.2019 16:34

@Endless Я использую SignalR в качестве транспорта между Layout и Backend. Загрузка в виде двоичного файла немного сложнее, чем в base64. А для JS клиент конвертирует образ в base64. Процесс сайта останавливается на время конвертации. Так что для меня это не так дорого.

Snickbrack 19.06.2019 16:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
775
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Благодаря Томасу я нашел решение.

C#-декодеру не нравится заголовок: data:image/jpeg;base64,

Вы можете исправить это с помощью этого короткого кода:

int index = base64Image.IndexOf("base64,") + "base64,".Length;
string base64String = base64Image.Remove(0, index);

Другие вопросы по теме