2016-07-05 7 views
0

ファイルサーバー用のコードがあります。静的フォルダ "public1"でダウンロード可能なファイルのインデックスを表示するには、htmlページを使用します。Node.jsファイルサーバー

私は現在、ユーザーが明示的にリクエストした場合、htmlページを提供できますが、自動的にhtmlページを提供することはできません。コメントアウトされたコードは、デフォルトで "hello"というhtmlページを提供する私の試みです。それは動作しません...

ブラウザでIPアドレスにナビゲートするユーザーにhtmlページを(デフォルトで)表示させるにはどうすればよいですか?

スタティックフォルダ内のファイルのインデックスを表示するにはどうすればよいですか?

この2つの部分の質問については、誰でもこれを行う方法を知っていますか?あなたは私を正しい方向に向けることができますか?

var express = require('express'); 
var server = express(); 
var port = 10001; 

//server.get(__dirname + 'public1', function(req, res) { 
// res.send('Hello.html'); 
//}); 

server.use(express.static(__dirname + '/public1')); 

server.listen(port, function() { 
    console.log('server listening on port ' + port); 
}); 
+0

静的フォルダとしてそのディレクトリを提供し、面倒な作業を省いてみませんか? – peteb

+0

あなたの言っていることを理解していると思いますが、ブラウザには何も表示されません。私は、利用可能なものが何であるかをユーザーに見てほしい。 – feltersnach

答えて

2

これを行う最も簡単な方法は明示のために利用可能であるserve-indexserve-staticミドルウェアを使用することです。以下のコード例は動作しますが、サービスを提供したいディレクトリがある場合はprocess.cwd()をスワップアウトしてください。

const express = require('express'); 
const serveIndex = require('serve-index'); 
const serveStatic = require('serve-static'); 
const path = require('path'); 
const server = express(); 

const port = process.env.PORT || 3000; 

function setHeaders(res, filepath) { 
    res.setHeader('Content-Disposition', 'attachment; filename=' + path.basename(filepath)); 
} 

const dirToServe = process.cwd();  

server.use('/', serveIndex(dirToServe, {icons: true})); 
server.use('/', serveStatic(dirToServe, {setHeaders: setHeaders})); 

server.listen(port,() => { 
    console.log('listening on port ' + port); 
}); 
+0

これは素晴らしいです、ありがとう! – feltersnach

関連する問題