上节课我们写了一个socket服务,通过浏览器可以连接我们的socket 只要在浏览器输入正确的地址(地址存在资源文件夹下面编译之后生成到target目录) 然后我们通过程序去寻找文件是否存在(文件怎么找的是根据浏览器发送的http协议内容后面跟的地址)
由于上节课是以字符串的格式读取的文件 所以如果我们要读取一张图片 上节课的代码就会出现问题
这节课我们解决一下
首先我们在资源文件夹下放一张图片abc.jpg
编译一下代码
浏览器输入localhost:9000/abc.jpg
出现了图片下载 并且下载的图片无法打开
这时因为我们上节课读取文件是以字符串格式读取的
之前的课程中我们学过 纯文本可以读取成字符串 二进制文件要以字节的方式读取
下面改造一下代码
只要把字节原样输出就可以了
来到Response
写一个方法的重载(参数不同即可)
上面代码我们得到了http请求头的字节数组了
需要将请求体字节数组和请求头字节数组拼接
所以需要学习下面的一些内容
Response重写的方法代码
接下来修改一下WritePage方法
编译一下代码
在浏览器输入localhost:9000
可以看见正常输出这是我们的首页
接下来输入localhost:9000/abc.jpg
结果如下
可以看见我们在资源文件夹下的图片访问到了
为什么之前没修改代码之前输入localhost:9000/abc.jpg
是出现的图片下载 虽然下载了但是却打不开
这时需要了解http协议里的content-type
接下来演示下如何让图片支持下载而不是显示在浏览器中
运行结果
输入localhost:9000/abc.jpg 可以发现图片下载了并能打开