Могу ли я использовать createReadStream () из fs с изображением base64 вместо пути? - PullRequest
1 голос
/ 23 сентября 2019

Я использую функцию createReadStream () из fs Node, чтобы сохранить изображение после ... в любом случае, мой вопрос:

Нужно ли передавать путь какаргумент функции?Могу ли я передать изображение в формате base64 или в другой кодировке, не предварительно сохранив его в файловой системе и не используя его путь?

Текущий:

const readStream = createReadStream('my_route');

Хотите:

const readStream = createReadStream(my_image);

Конечная цель - сохранить изображение в системе GridFS :

Attachment = mongoose_gridfs.createModel() // The GridFS object

const readStream = createReadStream('my_route');

const options = { filename: 'sample.txt', contentType: 'text/plain' };

this.Attachment.write(options, readStream, (error, file) => {
   console.log('File saved!');
});

Ответы [ 2 ]

2 голосов
/ 23 сентября 2019

Хотя я полагаю, что лучшим решением было бы получить изображение в виде потока и затем передать его по конвейеру, вы также можете попробовать библиотеку into-stream от Синдре Сорхуса https://github.com/sindresorhus/into-stream,, которая преобразует вашу строку (base64представление изображения) в поток, уже разделенный на части

EDIT

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

0 голосов
/ 24 сентября 2019

Наконец, я решил использовать библиотеку into-stream, как предложил @grokked, для непосредственного преобразования полученного изображения в поток.Затем я могу использовать поток после, чтобы сохранить изображение системой MongoDB GridFS.Спасибо всем за ответы:)

    import * as intoStream from 'into-stream';





    const image = req.body.myImage;

    const imageString = intoStream(image);

    .......

    imageString.myCustomSaveFunction(...)

...