天天看點

Node.js解決web伺服器發送檔案的問題

解決方法

1、先獲得我們要發送檔案的内容

//使用require方法加載fs核心子產品
var fs = require('fs');
//讀取檔案
fs.readFile('./resource/index.html',function (err,data){
//data即要發送的内容
})
           

2、再用 Request 請求對象的end方法發送頁面資料

代碼如下:

var http = require('http');

var server = http.createServer();

server.on('request',function (req,res){
  var url = req.url;
    //我們發送檔案裡面的内容
  var fs = require('fs');
  if(url === '/'){

      fs.readFile('./resource/index.html',function (err,data){
          if(err){
              res.setHeader('Content-Type','text/plain; charset=utf-8');
              res.end('讀取檔案失敗');
          }else{
              res.setHeader('Content-Type','text/html; charset=utf-8');
              //data預設是二進制資料,可以通過.toString 轉換為我們識别的字元串
              //res.end()支援兩種資料格式:一種是二進制,一種是字元串,除非要做資料處理,否則不用轉換
              res.end(data);
          }
      })
  }else if(url === '/a'){
      fs.readFile('./resource/3.jpg',function (err,data){
          if(err){
              res.setHeader('Content-Type','text/plain; charset=utf-8');
              res.end('讀取檔案失敗');
          }else{
             
              //圖檔不需要指定編碼了,因為我們常說的編碼一般指的是:字元編碼
              res.setHeader('Content-Type','image/jpeg');

              //data預設是二進制資料,可以通過.toString 轉換為我們識别的字元串
              //res.end()支援兩種資料格式:一種是二進制,一種是字元串,除非要做資料處理,否則不用轉換
              res.end(data);
          }
      })
  }
});

server.listen(3000,function (){
    console.log('伺服器啟動了');
})
           

繼續閱讀