获取文件名作为请求参数
我尝试用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
,斜杠第二次作为转义字符…这就是为什么当你试图调用服务器时,它们退出。
你可以:
- 创build两个variables传递给玉模板,一个是原始文件名,另一个是HTML编码的string
- 将variables传递给玉模板:
例如,根据您的原始玉:
body p filename: #{filename} button(onclick="location.href='/app/#{encodedFilename}'") click me