获取文件名作为请求参数

我尝试用node.js加载文件。

在我看来,我有一个button:

doctype 5 html(ng-app="lineApp") head title= title link(rel='stylesheet', href='/stylesheets/style.css') body p filename: #{filename} button(onclick="location.href='/app/#{filename}'") click me 

该页面显示一个filename: C:\users\username\my filename.txt的段落。 当我点击button时,URL是类似于http://localhost:8080/app/C:usersusernamemy%20filename.txt

所以当我尝试检索参数

 exports.appli = function (req, res) { var filename = req.params.filename; //.... }); }; 

与服务器端通话:

 app.get('/app/:filename?', routes.appli); 

我有一个无效的文件名。 那么我的问题是,如何在URL中传递一个文件path作为参数呢?

这是斜杠作为转义字符的问题。

首次将string传递给客户端时,任何转义斜杠(例如: c:\\users\\username\\my file.txt )都将转换为单斜杠。

当你使用href.location ,斜杠第二次作为转义字符…这就是为什么当你试图调用服务器时,它们退出。

你可以:

  1. 创build两个variables传递给玉模板,一个是原始文件名,另一个是HTML编码的string
  2. 将variables传递给玉模板:

例如,根据您的原始玉:

 body p filename: #{filename} button(onclick="location.href='/app/#{encodedFilename}'") click me