Size: a a a

Node.js — русскоговорящее сообщество

2020 July 27

AU

Anatoly Ukropov in Node.js — русскоговорящее сообщество
и аналогичная ошибка получается, что формат не поддерживается
источник

R

Rustam in Node.js — русскоговорящее сообщество
Anatoly Ukropov
Привет. Вопрос: есть скаченная по URL картинка
const file = await this.gotInsanse(photoUrl);
Потом я проверяю контент тайп
const [mime, type] = file.headers['content-type'].split('/');
, и если это картинка мне надо её сохранить. как константу file превратить в readable Stream ?
Куда сохранить? В файловую систему?
источник

y

ymdev in Node.js — русскоговорящее сообщество
Anatoly Ukropov
Я пытался сделать так
const stream = new Readable();
stream._read = () => {};
stream.push(file.body);
stream.push(null);
 и далее stream.pipe(...)
сделай typeof file.body
источник

AU

Anatoly Ukropov in Node.js — русскоговорящее сообщество
В gridFsBucket mongo
источник

AU

Anatoly Ukropov in Node.js — русскоговорящее сообщество
ymdev
сделай typeof file.body
string, вот так начинается
body: 'я┐╜PNG\r\n' +
   '\u001a\n' +
   '\u0000\u000
источник

AU

Anatoly Ukropov in Node.js — русскоговорящее сообщество
ни и там куча дальше такста
источник

W

Wembley in Node.js — русскоговорящее сообщество
источник

y

ymdev in Node.js — русскоговорящее сообщество
Anatoly Ukropov
string, вот так начинается
body: 'я┐╜PNG\r\n' +
   '\u001a\n' +
   '\u0000\u000
видимо, тебе сначала надо из текста в буфер, а уже из буфера в стрим
Попробуй
const buffer = Buffer.from(file.body)
const stream = new Readable()
stream.push(buffer)
stream.push(null)
источник

y

ymdev in Node.js — русскоговорящее сообщество
ymdev
видимо, тебе сначала надо из текста в буфер, а уже из буфера в стрим
Попробуй
const buffer = Buffer.from(file.body)
const stream = new Readable()
stream.push(buffer)
stream.push(null)
либо ищи у библиотеки, которой отправляешь запрос, параметр, отвечающий за то, чтобы вернуть не строку
источник

AU

Anatoly Ukropov in Node.js — русскоговорящее сообщество
ymdev
видимо, тебе сначала надо из текста в буфер, а уже из буфера в стрим
Попробуй
const buffer = Buffer.from(file.body)
const stream = new Readable()
stream.push(buffer)
stream.push(null)
(files on kernel:local): Input buffer contains unsupported image format.
источник

AU

Anatoly Ukropov in Node.js — русскоговорящее сообщество
ymdev
либо ищи у библиотеки, которой отправляешь запрос, параметр, отвечающий за то, чтобы вернуть не строку
есть у неё такое. got.stream(url) возвращает стрим, просто получается что я дважды файл скачиваю, сначала чтобы проверить мим тайп потом чтобы скачать
источник

y

ymdev in Node.js — русскоговорящее сообщество
Но, честно говоря, смысла в твоих действиях с преобразованием результата в поток таким образом, не особо много.
Так как весь смысл потоков сходит на нет, когда ты делаешь push.buffer()
То есть ты разово грузишь весь файл
источник

y

ymdev in Node.js — русскоговорящее сообщество
Anatoly Ukropov
есть у неё такое. got.stream(url) возвращает стрим, просто получается что я дважды файл скачиваю, сначала чтобы проверить мим тайп потом чтобы скачать
а какой content-type у файла?
источник

AU

Anatoly Ukropov in Node.js — русскоговорящее сообщество
ymdev
а какой content-type у файла?
image/*
источник

AU

Anatoly Ukropov in Node.js — русскоговорящее сообщество
ymdev
Но, честно говоря, смысла в твоих действиях с преобразованием результата в поток таким образом, не особо много.
Так как весь смысл потоков сходит на нет, когда ты делаешь push.buffer()
То есть ты разово грузишь весь файл
Это да, но мне надо так делать чтобы в монгу это записать, а она тока со стримом работает, если я правильно понял )
источник

y

ymdev in Node.js — русскоговорящее сообщество
теоретически, ты можешь вернуть стрим и попробовать проверить первый чанк на то, что это за формат.
Например, вот описание для PNG https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
В начале файла хранится информация, позволяющая идентифицировать тип файла
источник

y

ymdev in Node.js — русскоговорящее сообщество
Может для этого даже есть библиотеки готовые
источник

AU

Anatoly Ukropov in Node.js — русскоговорящее сообщество
ymdev
теоретически, ты можешь вернуть стрим и попробовать проверить первый чанк на то, что это за формат.
Например, вот описание для PNG https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header
В начале файла хранится информация, позволяющая идентифицировать тип файла
Спасибо, пойду погуглю )
источник

PM

Pieter Martin in Node.js — русскоговорящее сообщество
is there a workaround
источник

y

ymdev in Node.js — русскоговорящее сообщество
Anatoly Ukropov
Спасибо, пойду погуглю )
как пример https://pastebin.com/nxhyiSh6
Конечно, нужно проверить куда больше всяких значений, но, думаю, смысл понятен
источник