#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
символы и:
Есть идеи, почему? (Спасибо за любой ответ)
Комментарии:
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
.