如果它僅僅是一個1x1的gif圖片,那麼你並不需要保存鏡像文件並加載它,因爲已經有裝載了正確的字符串的base64空白的1x1 GIF圖片的好NPM包blankgif代碼,所以它會更快,然後單獨加載圖像。此外,還有一些幫助功能可以幫助您以expressjs發送此圖像。
要使用這個包,你可以只使用此代碼:
var blankgif = require('blankgif');
var express = require('express');
var app = express();
app.get('/track.gif', blankgif.sendBlankGif);
app.listen(3000, function() {
console.log('App listening on port 3000!');
});
我還以爲你想,因爲你需要這個空白圖像的某個地方跟蹤訪問實現這一點。所以,你可以用這個庫做有兩種方式:
1)使用blankgif的特殊中間件,增加了額外的功能,您的回覆對象
var blankgif = require('blankgif');
var express = require('express');
var app = express();
app.use(blankgif.middleware());
app.get('/track.gif', function(req, res) {
console.log('request information logged');
res.set('Cache-Control', 'public, max-age=0');
res.status(200).sendBlankGif();
});
app.listen(3000, function() {
console.log('App listening on port 3000!');
});
2)只要使用自定義的中間件blankgif.sendBlankGif
前
var blankgif = require('blankgif');
var express = require('express');
var app = express();
app.get('/track.gif', function(req, res, next) {
console.log('request information logged');
next();
}, blankgif.sendBlankGif);
app.listen(3000, function() {
console.log('App listening on port 3000!');
});
此外,如果你不想使用這個庫因爲某些原因(或者,如果你想另一個gif圖片),您可以手動擔任這一形象:
var express = require('express');
var app = express();
var fs = require('fs');
var path = require('path');
var buff = null;
fs.readFile(path.resolve(__dirname, 'pixel1x1.gif'), function (err, pixel) {
if (err) {
console.error("Could not open file: %s", err);
process.exit(1);
}
buff = pixel;
});
app.get('/track.gif', function (req, res) {
console.log('request information logged');
res.type('image/gif');
res.send(buff);
});
app.listen(3000, function() {
console.log('App listening on port 3000!');
});
嘗試使用'res.end(pixel,'binary');' –
你能解釋一下你究竟想要達到什麼目的嗎?如果您只需要根據res.writeHead和res.end()函數調用將圖像提供給客戶端,那麼手動配置的方式就會少一些,即配置用於存儲資源並將其提供給客戶端的公共目錄。 –