Как получить файл с помощью request.get ()? - PullRequest
0 голосов
/ 29 октября 2019

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

На стороне сервера

const express = require("express");
const app = express();
const file = "./samplefiles/Helloworld.txt";

app.get("/", (res)=>{
    res.download(file);
});

module.exports = app; //this exports to server.js
const http = require("http");
const app = require("./app.js);
const port = 8080;

const server = http.createServer(app);

server.listen(port, () => {
    console.clear();
    console.log("server running");
})

Клиентская сторона

const request = require("request");

request.get("http://localhost:8080/", (req, body) => {
    console.log(body);
    console.log(res);
});

Если я пытаюсь получить к нему доступ через браузер, меня спрашивают, что я хочу сделать с файлом, он работает. Тем не менее, если я запускаю свой код на стороне клиента, он печатает тело и Res (будучи нулем). Я ожидал, что имя файла и его содержимое будут в теле, но в теле было только содержимое файла.

Я хочу получить весь файл, возможно, или, по крайней мере, получить его имячтобы я мог «сделать» его копию на стороне клиента.

Ответы [ 3 ]

0 голосов
/ 29 октября 2019

Вы можете обслуживать любые файлы, которые хотите, с помощью экспресс-статического метода:

app.use(express.static('public'))

, в этом случае просто поместите все файлы, которые вы хотите обслуживать, в папку public, и затем вы сможете получить к ней доступ с помощью localhost:8080 / Helloworld.txt.

0 голосов
/ 30 октября 2019

Я закончил работать над этим.

Я отправил имя файла в качестве заголовка и, таким образом, смог создать копию файла, который я хотел загрузить, используя информацию о теле и заголовок файла.

0 голосов
/ 29 октября 2019

Измените код вашей стороны сервера на:

const port = 8080;
const express = require("express");
const app = express();
const path = require('path');
app.get("/", function(req, res){
    res.sendFile(path.join(__dirname, 'app.js'));
});

app.listen(port, () => {
console.clear();
console.log("server running");
});

Измените код вашей стороны клиента на:

var request = require('request');
request('http://localhost:8080/', function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print data of your file
});

Вам необходимо установить запрос npm i request для стороны клиента

...