【问】node如何读取本地图片并显示在浏览器
发布于 5个月前 作者 ASCII26 492 次浏览 来自 问答

如题,我折腾了好久啊,简直是无头绪啊。。。。附上代码,各位大神帮忙看看怎么搞: var http = require(‘http’), fs = require(‘fs’);

fs.readFile('./avatar.jpg’,’binary’,function(err, file) { if (err) { console.log(err); return; }else{ http.createServer(function(req, res) { res.writeHead(200, {’Content-Type’: ‘image/jpeg’}); res.write(file,’binary’); res.end(); return; }).listen(8888); } });

14 回复

不报错。。。各种正确。。

运行能显示啊

@suinia 啊!!!!为啥。。。。我愁好几天了,是哪里出了问题?

@ASCII26 是不是你图片本来就有问题…

@suinia 我发现,好像是图片路径的问题,我把图片放在和此文件同一目录下,引用时候用’./avatar.jpg’,理论上不应该是对的吗? 可是事实上不对,我得把路径写到上一层,像这样“./test/avatar.jpg”才能引用到图片。。。。为啥?入口函数怎么会跑到上层去了? 明明test.js也是在’./test/test.js’的啊。。

在linux里跑了,表示正常,node版本号:v0.10.18

我按照我刚刚理解的那个原理,试着寻址test.js上一级兄弟目录下的图片,又出不来了。。。。这。。。谁能给我讲清楚Node的寻址原理。。。

@ASCII26 我直接copy你代码没问题的 如果换一个路径找不到 就报错了:window7环境下 [Error: ENOENT, open ‘E:\lizhi_project\node\podcast_1.jpg’]

没看你的代码,但我很好奇为啥你会有这个需求? 一般来说直接让nginx或者apache来处理静态文件不就好了吗? 你要嫌麻烦, 直接用express处理也简单,一行代码搞定。 自己为啥要重复造蹩脚的轮子呢?

@wuliao49 有Node做服务器了,为啥还要用nginx或者apache?一开始也想过用Node+nginx,但是总感觉有点累赘,单用Node不也挺好的么

fs.createReadStream('./mypic.png').pipe(res);

@ASCII26 我也遇到这个问题 你试试 require(‘path’).join(__dirname, ‘./xx.jpg’)

回到顶部