Как мне разобрать строку запроса с filepath в качестве одной из переменных и загрузить файл с помощью этой переменной filepath? - PullRequest
0 голосов
/ 18 февраля 2019

Я использую node.js для создания нового сервера, и я хотел бы загрузить файл, используя путь к файлу, который находится в данном URL.Я также хотел бы передать переменную "action" внутри этой строки запроса.

Например, это будет похоже на "http://hostname:port/?action=download&filepath=c:\Users\User\Desktop\filename.txt"

. Я хотел бы извлечь действие и путь к файлу и использовать его для выполнения такой задачи, как загрузка файла. У меня проблемас извлечением пути к файлу и передачей его программе. Кажется, что когда я использовал url.parse (). query, он удаляет косую черту, когда я печатаю его в журнал консоли.

http.createServer(function (req, res) {
  var q = url.parse(req.url, true);
  var filename = "." + q.pathname;
  fs.readFile(filename, function(err, data) {
    if (err) {
      res.writeHead(404, {'Content-Type': 'text/html'});
      return res.end("404 Not Found");
    }  
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    return res.end();
  });  


}).listen(3000, "10.0.0.171");

1 Ответ

0 голосов
/ 18 февраля 2019

Ваше описание немного сбивает с толку.В примере с URL вы указываете абсолютный путь filepath=c:\Users\User\Desktop\filename.txt и используете ключ filepath, а в коде вы пытаетесь составить относительный путь "." + q.pathname и используете ключ pathname.Также вы обрабатываете значение, возвращаемое url.parse(), как объект запроса, в то время как это полный объект URL с ключом query, содержащим объект запроса.

Если вы уверены, что значение пути является абсолютным (и что это безопасный подход, кстати), попробуйте это:

var filename = q.query.filepath;

Если это не сработает, попробуйте отладить хотя бы с console.log(req.url, q.query.filepath), чтобы убедиться, что клиент отправляет действительный URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...