Base64 с неверными символами

#javascript #mysql #node.js #base64

#javascript #mysql #node.js #base64

Вопрос:

Я написал какое Angular -то веб-приложение, и мне нужно отображать изображения, ngFor поэтому я подключил свое приложение MySQL database к Blob значению фотографии:

структура БД

И вот мой node.js WebApi код, отвечающий за отправку данных:

 Przepis.getAll = result => {
    sql.query("SELECT id,title,description,author,recipe,preparation,TO_BASE64(photo) FROM przepisy", (err, res) => {
        if (err)
        {
            console.log("error: ", err);
            result(null, err);
            return; 
        }
        console.log("Przepisy: ", res);
        result(null, res);
    });
};
  

Единственная проблема, с которой я сталкиваюсь, заключается в том, что эта строка Base64, которую я получаю из Api, имеет некоторые дефекты, такие как n символы и:

Восстановление Base64

Есть идеи, почему? (Спасибо за любой ответ)

Комментарии:

1. Вы пробовали удалять новые строки перед декодированием? Как вы получили это с помощью literal n в нем?

2. Вы имеете в виду удаление n назад, когда это был большой двоичный объект, после кодирования TO_BASE64 (), выполненного в MySQL или при отправке его через api? И это n Я понятия не имею, откуда это, я думаю, что это возникает после использования TO_BASE64 (), потому что в журнале консоли уже были эти теги.

3. Это не должно быть буквальной обратной косой чертой-n , это должен быть фактический перевод строки, поэтому странно, что вы получаете такой случайный мусор. Может быть, ошибка в декодировании? Или что-то где-то кодирует его дважды? Это может быть артефактом JSON-in-JSON.

Ответ №1:

Используйте btoa() и atob() для декодирования и кодирования Base64 из и в ANCII

Ответ №2:

Исправлена проблема на стороне серверной части путем изменения SQL-запроса для удаления символов новой строки n .