node.js如何根據(jù)URL返回指定的圖片詳解
學(xué)node的過程碰到的一些坑,當(dāng)時以為只需將圖片放在html頁面指定的路徑下,訪問該頁面時,圖片也會獲取到,但是現(xiàn)在想來,或許是服務(wù)器只提供這個html的文件,交由客戶端的瀏覽器編譯,但是在客戶端里并不存在該圖片文件,所以圖片自然無法獲取到。在看其他頁面的源代碼后,發(fā)現(xiàn),他們的圖片路徑都是通過訪問網(wǎng)絡(luò)資源得到的,所以說,圖片也應(yīng)屬于網(wǎng)絡(luò)資源,而不是這樣:
代碼便不是如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<img src="img/NAROTA.jpg"/>
</body>
</html>
那么怎么設(shè)置網(wǎng)絡(luò)資源呢,比如一張png格式的圖片,我們需要知道,網(wǎng)絡(luò)資源首先放在我們的服務(wù)器,所以我們的node.js服務(wù)器中應(yīng)該在客戶端訪問這張圖片時讀取這張圖片,然后再返回給客戶端,下面我們直接貼出代碼,這個是我自己瞎捉摸的,我目前也不知道主流的做法是怎么樣的,但是還是優(yōu)化了一下url的解析:
var http=require("http");
var fs=require("fs");
var url=require("url");
//創(chuàng)建一個server的實例
var server=http.createServer(function(req,res){
var pathname=url.parse(req.url).pathname;
//當(dāng)url的ip加端口號的后1到7位為img/png時,返回以該路徑下對應(yīng)的png圖片
if(pathname.substring(1,8)==='img/png'){
fs.readFile(pathname.substring(1),function(err,data){
res.writeHead(200,{'Content-Type':'image/png'});
res.end(data);
});
}
//jpg同上
if(pathname.substring(1,8)==='img/jpg'){
fs.readFile(pathname.substring(1),function(err,data){
res.writeHead(200,{'Content-Type':'image/jpeg'});
res.end(data);
});
}
}).listen(3010);//監(jiān)聽在3010端口
console.log('服務(wù)器已開啟......');
主要是如何解析url,比如我要訪問127.0.0.1:3010這個ip加端口的服務(wù)器,其目錄下的img/png的warn.png這張圖片,在上述代碼中,我就只需訪問127.0.0.1:3010/img/png/warn.png ,效果如下:

具體思路是,將url中的img/png/xxx.png解析出來作為我們讀取圖片的參數(shù),這樣做得好處是只需一條判斷語句即可處理所有的png類型的圖片。
在node.js中,可以通過writeHead() 方法寫頭,表明該文件的類型,可以將大部分的文件類型設(shè)置為網(wǎng)絡(luò)資源。
下面是一些常用的HTTP Content-Type,希望對大家能有幫助:

總結(jié)
到此這篇關(guān)于node.js如何根據(jù)URL返回指定圖片的文章就介紹到這了,更多相關(guān)node.js根據(jù)URL返回圖片內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
NodeJS實現(xiàn)視頻轉(zhuǎn)碼的示例代碼
本篇文章主要介紹了NodeJS實現(xiàn)視頻轉(zhuǎn)碼的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11
使用Node.js find-up在父目錄中高效尋找文件與目錄
find-up 是一個小巧但功能強(qiáng)大的 Node.js 包,它能幫助我們實現(xiàn)這一需求,本文將深入探究如何使用 find-up 進(jìn)行有效搜索,并結(jié)合豐富的代碼演示幫助大家快速掌握其用法,需要的朋友可以參考下2024-05-05
Mongoose中document與object的區(qū)別示例詳解
這篇文章主要給大家介紹了關(guān)于Mongoose中document與object區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
nodejs微信開發(fā)之自動回復(fù)的實現(xiàn)
這篇文章主要介紹了nodejs微信開發(fā)之自動回復(fù)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
使用DNode實現(xiàn)php和nodejs之間通信的簡單實例
這篇文章主要介紹了使用DNode實現(xiàn)php和nodejs之間通信的簡單實例,本文講解了DNode的安裝,以及使用的它的步驟和方法,需要的朋友可以參考下2015-07-07
詳解如何優(yōu)雅在webpack項目實現(xiàn)mock服務(wù)器
這篇文章主要為大家介紹了詳解如何優(yōu)雅在webpack項目實現(xiàn)mock服務(wù)器,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02

