2016-02-26 35 views
0

如何让nodejs提供静态内容而不必使用sendFile?与SENDFILE问题是,它会打开另一个选项卡,你从页面浏览页面,这里是一个片段...nodejs静态内容不使用sendFile

app.use(express.static(__dirname + '/public')); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.post('/verify', function(request, response) { 
    var oneTimeCode = request.body.oneTimeCode; 
    var timeEntry = Date.now(); 
    if (oneTimeCode == 'abc123') {  
    response.sendFile('/home/ubuntu/form.html'); 
    } else {...... 

我可以使用像这样的地方SENDFILE的?

app.use(express.static(__dirname + '/home/ubuntu/form.html')); 
+1

取决于您希望如何访问它。从代码片段中删除'form.html',然后你就可以从'// domain.com/form.html',**以及该文件夹中的其他东西访问它。** sendFile不应该被打开尽管..一个新的标签,有效地使这是一个XY问题。 –

+0

你是说这样看起来像这样吗? 'response.sendFile('//https://domain.com/form.html');' –

+1

否.... //domain.com/form.html是客户端如何访问它。您将在节点中执行重定向以从验证路由中获取它。但请注意,这些都不会解决您主要关注的问题*“sendFile的问题在于您在每页导航时打开另一个选项卡”*,因为sendFile不这样做。因此,无论做什么,无论您在服务器端实施什么解决方案,都会继续这样做。 –

回答

1

express.static不是一个很好的选择来提供单个文件。 它旨在使用url00作为文件名称解析的here中所述的文件夹内的所有静态资源。

sendFile()不应该负责开辟新的标签。可能你在锚html元素上有一个错误的目标?

如果你想发送静态内容,而无需使用sendFile()你可以随时打开静态资产文件,并转学过来的响应流中的内容。这是sendFile()所做的。您可以查看source code并从那里获取创意。

+0

我看到你已经标记为答案。你能否描述你未来引用的问题的根源? – yeiniel

+0

我想这最好的回答我的原始问题:'express.static不是一个单独的文件服务的好选择。它的目的是为文件夹内的所有静态资源提供文件名解析,如下所述。“虽然我仍然有多个选项卡打开,我不知道如何继续。 –