2017-08-28 20 views
0
var http = require('http'); 
var fs = require('fs'); 
var path=""; 
process.stdin.on('data', function(chunk) {  
    var buffer = new Buffer(chunk); 
    path = buffer.toString();  
    path = path.replace("\n",""); 
    path = path.replace("\r",""); 
}); 
var str=""; 
var fileRead; 
var arrayFiles = []; 
function onRequest(request, response) { 
    str = "";  
    if (request.url === '/favicon.ico') { 
     response.writeHead(200, {'Content-Type': 'image/x-icon'}); 
     response.end(); 
     return; 
    } else if (request.url === '/index.html') { 
     console.log("Request received" + path); 
     fs.readdir(path, function(err, items) { 
     console.log(items); 
     arrayFiles = []; 
     str += items; 
     arrayFiles.push(items);    
     console.log("Enter file to be read"); 
     process.stdin.on('data', function(chunk) { 
      var buffer = new Buffer(chunk); 
      fileRead = buffer.toString(); 
      fileRead = fileRead.replace("\n",""); 
      fileRead = fileRead.replace("\r",""); 
      if(arrayFiles[0].indexOf(fileRead) != -1) { 
       fs.readFile(fileRead, 'utf8', function(err, contents) { 
        response.writeHead(200, {"Context-Type": "text/plain"}); 
        response.write(contents); 
        response.end(); 
       }); 
      } 
     }); 
    }); 
} 
} 
http.createServer(onRequest).listen(8000); 

与えられたプログラムは入力として与えられたディレクトリにファイルを表示します。そして、内容を表示するファイル名を入力する。http GETリクエスト(特急なし)

与えられたプログラムでは、stdinから値を読み込むのではなく、GET要求を使ってユーザーからの入力としてファイルの名前が必要です。 Expressモジュールなしでこれを行うことは可能ですか?はいの場合は、助けてください。事前

+0

「ファイル名」のようになります。ここでは一例ですか?実行中のnode.jsコードファイル?またはユーザーがアップロードしたファイルですか? – shaochuancs

+0

内容が表示されるファイル@shaochuancs –

+1

'GET /index.html?filename = test.txt'のようなURLパラメータとしてファイル名を入れることができると思います – shaochuancs

答えて

0

おかげではい、あなたはどんなエクスプレスのものなし、無地のNode.js HTTPコードを持つHTTP GETリクエストから送られたファイル名を取得することができます。

このメソッドは、URLパラメータとしてfilenameを渡し、サーバー側で解析します。

/index.html?filename=test.txtのようなURLの場合
const http = require('http'); 
const server = http.createServer((req, res) => { 
    let params = req.url.substring(req.url.lastIndexOf('?') + 1).split('&'); 
    let filename = null; 
    for (let p of params) { 
    let paramKeyValPair = p.split('='); 
    if (paramKeyValPair[0] === 'filename') { 
     filename = paramKeyValPair[1]; 
     break; 
    } 
    } 
    console.log(filename); 
    // deal with filename 
    res.end('Hello'); 
}).listen(8327); 

、サーバ側でfilename変数は、ファイルtest.txt

関連する問題