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)文章
Node.js的路由、EJS模板引擎、GET和POST請求講解
這篇文章介紹了Node.js的路由、EJS模板引擎、GET和POST請求,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06Node.js對MongoDB數(shù)據(jù)庫實現(xiàn)模糊查詢的方法
模糊查詢是數(shù)據(jù)庫的基本操作之一,下面這篇文章主要給大家介紹了利用Node.js對MongoDB數(shù)據(jù)庫實現(xiàn)模糊查詢的方法教程,文中給出了詳細(xì)的介紹和示例代碼,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-05-05NodeJS http模塊用法示例【創(chuàng)建web服務(wù)器/客戶端】
這篇文章主要介紹了NodeJS http模塊用法,結(jié)合實例形式分析了node.js創(chuàng)建web服務(wù)器與客戶端,進(jìn)行HTTP通信的相關(guān)操作技巧,需要的朋友可以參考下2019-11-11Ubuntu22.04系統(tǒng)下升級nodejs到v18版本
ubuntu默認(rèn)安裝的nodejs版本比較老,要安裝到最新的,下面這篇文章主要給大家介紹了關(guān)于Ubuntu22.04系統(tǒng)下升級nodejs到v18版本的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06NodeJS連接MongoDB數(shù)據(jù)庫時報錯的快速解決方法
下面小編就為大家?guī)硪黄狽odeJS連接MongoDB數(shù)據(jù)庫時報錯的快速解決方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考2016-05-05