最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何使用文件路径解析查询字符串作为变量之一并使用该文件路径变量下载文件?

运维笔记admin17浏览0评论

如何使用文件路径解析查询字符串作为变量之一并使用该文件路径变量下载文件?

如何使用文件路径解析查询字符串作为变量之一并使用该文件路径变量下载文件?

我正在使用node.js来创建一个新服务器,我想使用给定URL中的文件路径下载文件。我还想在此查询字符串中传递“action”变量。

例如,它就像“http://hostname:port/?action=download&filepath=c:\ Users \ User \ Desktop \ filename.txt”

我想提取动作和文件路径,并使用它来完成一个任务,如下载文件。我在解压缩文件路径并将其传递给程序时遇到问题。似乎当我使用url.parse()。查询时,它会在我将其打印到控制台日志时删除斜杠。

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");
回答如下:

你的描述有点令人困惑。在URL示例中,您提供绝对路径filepath=c:\Users\User\Desktop\filename.txt并使用filepath密钥,而在代码中,您尝试组合相对路径"." + q.pathname并使用pathname密钥。您还将url.parse()返回的值视为查询对象,而它是一个包含查询对象的query密钥的完整URL对象。

如果你确定路径值是绝对的(顺便说一下,这是一种安全的方法),试试这个:

var filename = q.query.filepath;

如果这不起作用,请尝试至少使用console.log(req.url, q.query.filepath)进行调试,以确保客户端发送有效的URL。

发布评论

评论列表(0)

  1. 暂无评论