nodejs进阶(4)—读取图片到页面
我们先实现从指定路径读取图片然后输出到页面的功能。
先准备一张图片imgs/dog.jpg。
file.js里面继续添加readImg方法,在这里注意读写的时候都需要声明’binary’。(file.js 在上一篇文章nodejs进阶3-路由处理中有完整的内容)
readImg:function(path,res){<br/> fs.readFile(path,'binary',function(err, file) {<br/> if (err) {<br/> console.log(err);<br/> return;<br/> }else{<br/> console.log("输出文件");<br/> //res.writeHead(200, {'Content-Type':'image/jpeg'});<br/> res.write(file,'binary');<br/> res.end();<br/> }<br/> });<br/> }
服务器创建代码如下,注意在发送请求头时需要声明 {‘Content-Type’:’image/jpeg’}
var http = require('http'); <br/> var file = require('./models/file'); <br/> http.createServer(function (request, response) { <br/> //response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); <br/> response.writeHead(200, {'Content-Type':'image/jpeg'}); <br/> if(request.url!=="/favicon.ico"){ //清除第2此访问 <br/> console.log('访问'); <br/> //response.write('hello,world');//不能向客户端输出任何字节 <br/> file.readImg('./imgs/dog.jpg',response); <br/> //------------------------------------------------ <br/> console.log("继续执行"); <br/> //response.end('hell,世界');//end在方法中写过 <br/> } <br/> }).listen(8000); <br/> console.log('Server running at http://127.0.0.1:8000/');
运行后在浏览器里可以看到读取后的图片显示出来。
当然我们真正应用时并不会这样使用,下面我们在换一种方式调用图片,在html里发送请求图片的方法。
<html><br/> <head></head><br/> <body><br/> 登录:<br/> <p>这是一个段落</p><br/> <h1>样式1</h1><br/> <img src="./showImg"></img><br/> </body><br/> <html>
我们用login.html继续测试,在里面加入一个img标签,src的值为”./showImg”,这样浏览器会发送另外一个请求http://localhost:8000/showImg。
这样我们在router里面再加入一个方法showImg,在这个方法里面调用file文件里的readImg方法(在本文的第一段代码里)
showImg:function(req,res){<br/> file.readImg('./imgs/dog.jpg',res);<br/> }
我们运行http://localhost:8000/login