Возврат файла в ответе HTTP - PullRequest
1 голос
/ 29 мая 2019

Я очень новичок в Node JS и буду признателен за любую помощь / совет.

Используя NodeJS, я создал локальный сервер с этой ссылкой (это просто привет мир)

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

Я хотел бы сделать этот шаг дальше, и когдаreponse.method это получить / разместить / и т.д.- Я бы хотел, чтобы ответом был файл.

Другими словами, я хотел бы вернуть файл из ответа HTTP.

Теоретически, что-то вроде:

if(request.method == "GET")
{
    response.end("C:\[file path]\test.txt");
}

Я пытался просто скопировать / вставить каталог с файлом после response.end ('file directory'), но не открывал файл, который мне нужен.

const http = require("http");
const hostname = '127.0.0.1';
const port = 8091;

var server = http.createServer ( function(request,response){

response.writeHead(200,{"Content-Type":"text\plain"});
if(request.method == "GET")
    {
        response.end("received GET request.")
    }
else if(request.method == "POST")
    {
        response.end("received POST request.");
    }
else
    {
        response.end("Undefined request .");
    }
});

server.listen(port, hostname, () => {
    console.log(`Server running at http://${hostname}:${port}/`);
});

1 Ответ

1 голос
/ 29 мая 2019

Вы можете отправить данные файла, сначала прочитав файл с помощью метода readFile модуля fs, а затем отправив его через res.write(), затем res.end() или просто res.end(), как вы это сделали.Вот пример:

var http = require('http');
var url = require('url');
var fs = require('fs');

http.createServer(function(req, res) {
    if (req.method === 'GET' && req.url === '/') {
        fs.readFile('./index.html', function(err, data) {
            if (err){
                throw err;
            }
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.end(data);
            return;
        });
    }
}).listen(3000);

Я ответил на вопрос, похожий на этот здесь: https://stackoverflow.com/a/56285824/4882724

...