2015-02-04 70 views
4

在其餘的API調用獲取用戶信息我想返回用戶信息與圖像。任何人都可以請告訴如何將圖像與節點js中的信息一起返回。另外我怎麼能看到像郵遞員一樣在Web客戶端返回的信息。節點JS返回圖像在休息API響應

回答

9

如果要將圖像作爲二進制數據發送,可以使用內置的res.sendFile函數。

如果您希望此圖片僅供當前用戶使用,您可以使用授權框架(如passportjs),甚至包含所有內容的高級框架(例如huntjs)。

下面是一個例子,檢查req.user是否存在,然後發送JSON以鏈接到圖像或圖像本身。 如果圖像很小,發送base64編碼版本可能會更好。

app.get('/info', function(req,res){ 
    if(req.user){ 
     res.status(200).json({ 
      'imageName':'some image', 
      'imageUrl':'/someImageUrlOnlyForAuthorizedUsers.jpg' 
     }); 
    } else { 
     res.status(401).send('Authorization required!'); 
    } 
}); 

app.get('/someImageUrlOnlyForAuthorizedUsers.jpg', function(req,res){ 
    if(req.user){ 
     res.sendFile('./mySecretImage.jpg'); 
    } else { 
     res.status(401).send('Authorization required!'); 
    } 
}); 
+0

謝謝,但如果我發送圖像的直接url,那麼可能存在任何人都可以訪問該圖像的安全威脅。 – alihsyed23

+0

我擴大了我的答案 – vodolaz095

+0

這聽起來像個好主意。還有一件事我可以同時發送json響應和文件。我的意思是我想要返回用戶信息,並且用戶的圖片可以用相同的響應來完成。 – alihsyed23