前端代码:
var img = new Image();
img.onload = function() {
console.log('done');
};
img.onerror = function() {
console.log('error'); // 触发的是这里
};
img.src = 'http://localhost: 3000?test.gif';
后端代码:
const express = require('express');
const app = express();
app.get('/grabber.gif', (req, res) => {
res.type('gif');
res.send(new Buffer(1));
});
const server = app.listen(3000, () => {
console.log(`listen at http://localhost:${3000}`);
});
这是什么原因?消息头的原因吗?
因为空 GIF 并不是
new Buffer(1)
啊,它有自己的二进制结构内容。题主还不如自己准备一张空 GIF 图放在目录下,在程序初始化的时候把
Buffer
读进来。真想自己构造一张 GIF 图的话,可以参考这里自行构建一个对应的Buffer
,我当年做项目修改 GIF 图片的时候就是参考了这篇结构解析。