2016-06-30 40 views
0

我發送文件名到服務器,並試圖得到某種形式的響應,以確保API調用正在工作,但其始終迴響404即使路徑是正確的,我不知道我在哪裏犯錯,任何想法?如何使用angularjs從服務器檢索響應?

angularjsFactory.js

getFile:function(file_name){ 
      return $http.get("/file?file_name="+file_name); 
     } 

server.js

var express = require('express'); 
var app = express(); 
var fs = require('fs'); 
app.use(express.static(__dirname + "/public")); 
var readDirectory = require('./readDirectory'); 

app.get('/file', function(req, res) { 
    var path = './ditLogs'; 
    var fileParam = req.query.file_name; 
    console.log(fileParam); 
    fs.readdir(path, function(err, items) { 
     items.forEach(function(items) { 
      if (fileParam === items) { 
       res.sendFile(items); 
       console.log(items); 
      } 
     }); 
    }); 
}); 
app.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
    //console.log('app is printing data',obj); 
    //ditProducer.startProducer(); 
    setTimeout(function() { 
     ditconsumer.start(); 
    }, 2000); 

}); 
+0

您是否嘗試在網址末尾添加正斜槓'/' – bhzag

回答

1

你的服務器上的路線是不正確的比較,從角的邊通話。您沒有使用路由參數,而是查詢字符串。

試試這個:

app.get('/file', function (req, res) { 
    // get filename using: req.query.file_name 
    res.send('FIle data'); 
}); 

或者你可以試試這個角度上,並保持服務器代碼:

$http.get("/file/"+ encodeURI(file_name)); 
+0

有沒有辦法在傳遞參數時傳遞參數? – hussain

+0

@hussain更新了我的答案 – phnkha

+0

我不知道文件名傳遞爲/test.txt,我不知道爲什麼 – hussain

0

服務器端代碼看起來不正確。

app.get('/file', function (req, res) { 
    console.log(req.query.file_name);//This will give you filename passed as url param 
    res.send('FIle data'); 
}); 
+0

我更新了我的服務器代碼,以便您更好地理解我正在嘗試執行的操作。 – hussain

+0

您可以確認您沒有添加此中間件app.get('/ file',function(req,res){get filename使用:req.query.file_name res.send('FIle data'); });最後在app.js –

+0

它應該在上面://捕獲404並轉發到錯誤處理程序 app.use(函數(req,res,next){var_error = new Error('Not Found'); err.status = 404; next(err); }); '需要檢查你的app.js –

相關問題