让我们的socket服务拥有简单的图片访问功能,且能下载(浏览器访问)

上节课我们写了一个socket服务,通过浏览器可以连接我们的socket 只要在浏览器输入正确的地址(地址存在资源文件夹下面编译之后生成到target目录) 然后我们通过程序去寻找文件是否存在(文件怎么找的是根据浏览器发送的http协议内容后面跟的地址)
由于上节课是以字符串的格式读取的文件 所以如果我们要读取一张图片 上节课的代码就会出现问题
这节课我们解决一下
首先我们在资源文件夹下放一张图片abc.jpg


image.png

编译一下代码
浏览器输入localhost:9000/abc.jpg


image.png

出现了图片下载 并且下载的图片无法打开
这时因为我们上节课读取文件是以字符串格式读取的
之前的课程中我们学过 纯文本可以读取成字符串 二进制文件要以字节的方式读取
下面改造一下代码
只要把字节原样输出就可以了

来到Response
写一个方法的重载(参数不同即可)


image.png

上面代码我们得到了http请求头的字节数组了
需要将请求体字节数组和请求头字节数组拼接
所以需要学习下面的一些内容
image.png

image.png

Response重写的方法代码
image.png

接下来修改一下WritePage方法
image.png

编译一下代码
在浏览器输入localhost:9000
可以看见正常输出这是我们的首页
接下来输入localhost:9000/abc.jpg
结果如下
image.png

可以看见我们在资源文件夹下的图片访问到了
为什么之前没修改代码之前输入localhost:9000/abc.jpg
是出现的图片下载 虽然下载了但是却打不开
这时需要了解http协议里的content-type


image.png

接下来演示下如何让图片支持下载而不是显示在浏览器中
image.png

image.png

image.png

运行结果
image.png

image.png

输入localhost:9000/abc.jpg 可以发现图片下载了并能打开
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容