Как обслуживать необработанные двоичные данные изображения в nodejs - PullRequest
0 голосов
/ 04 января 2019

В моем html-файле есть тег img, который запрашивает изображение с сервера nodejs. В моем файле js сервера ниже приведен код для отправки ответа на изображение, но я заметил, что данные не отображаются на стороне клиента. Есть предложения?

const getFile = (filePath) => {
    return new Promise((resolve, reject) => {
        fs.readFile(filePath, (error, data) => {
            if (!error) {
                resolve(data);
            } // enter code here
            else reject(error);
        });
    });
};

getFile(test.jpg).then((data) => {
    response.statusCode = "200";
    response.setHeader("Content-Type", "image/jpg");
    response.end(data, "base64"); // Also tried response.end(data, "binary")
})
.catch(error => console.log(error));

Ответы [ 2 ]

0 голосов
/ 06 января 2019

Вместо fs.readFile, использование fs.createReadStream и конвейерная обработка кусков работали для изображений.

let frstream = fs.createReadStream(url);
        response.statusCode = "200";
        response.setHeader("Content-Type", "image/jpeg");
        frstream.pipe(response);
0 голосов
/ 05 января 2019

Это приложение Express? Если это так, лучше всего использовать статическое промежуточное ПО . Поместите все ваши статические (двоичные) файлы в одну папку, предоставьте статическое промежуточное ПО и загрузите его таким образом.

...