Node.js Декодирование образа Base64 и сохранение его через API - PullRequest
0 голосов
/ 09 мая 2018

Я пытался заставить работать быстрый API-интерфейс node.js, но у меня возникли некоторые проблемы, и я надеялся, что кто-то может помочь.

Что я пытаюсь сделать: я пытаюсь передать URI-код данных изображения в кодировке base64 в мой файл node.js и сохранить его на моем сервере. Я верю, что у меня это почти получилось, но по какой-то причине изображение искажается. Когда я пытаюсь запустить скрипт, когда я просто жестко кодирую dataURI, сохраненное изображение идеально. Однако при использовании запроса GET сохраненный файл поврежден, и я не могу его открыть.

Вот что у меня есть:

const express = require('express');
const fs = require('fs');
const app = express();

app.listen(3000, () => { console.log
('Running on port 3000...');
});

app.get('/api/users', function(req, res) {
let base64String = req.param('datauri');
let base64Image = base64String.split(';base64,').pop();

fs.writeFile('image.png', base64Image, {encoding: 'base64'}, function(err) {
console.log('File created');
});
res.send(base64Image);  
});

Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 09 мая 2018

Вам необходимо url-декодировать строку base64, чтобы заменить специальные символы обратно в их исходную форму. И.Е. поменять + обратно на пробел

Вы должны быть в состоянии использовать decodeURIComponent()

var base_64 = decodeURIComponent(base_64_string);
...