Cloudimage
发布日期:2021-09-20 08:56:06
浏览次数:15
分类:技术文章
本文共 1348 字,大约阅读时间需要 4 分钟。
基于HTTP协议的图片处理服务器 Cloudimage
项目功能
- 提供一个存储图片服务器,为图片提供一个唯一的url,用url可以将图片展示在其他网页上
项目思路
- 使用MySQL数据库保存图片的各种信息,并对MySQL提供的接口进行封装
- 采用md5算法对下载的图片进行校验,保证图片的完整性
- 采用RESTful风格对HTTP协议进行设计
- 使用使用JSON数据交换格式组织请求信息与响应信息
使用步骤
1.向服务器上传图片
首先向服务器请求上传图片的html
网页,从该网页向服务器上传图片
47.98.98.123/upload.html
选择文件进行上传 2.获取图片信息
通过get
方法使用图片id
在/image
目录下获取图片信息
JSON
格式进行返回,返回图片的名称,大小,以及各式等信息 3.获取服务器中的图片内容
使用Get
方法加上/show
的后缀以及图片的id
,可以完整的将图片显示在网页上
4.图片的删除
使用postman
工具构造Delete
方法进行删除,根据/image
后缀以及图片的id
进行删除,删除数据库中图片的信息以及服务器上图片的内容,删除成功返回true
读写实现
将图片内容存储在服务器的磁盘中
bool Write(const std::string& file_name,const std::string& content){ std::ofstream file(file_name.c_str()); if (!file.is_open()) { return false; } file.write(content.c_str(), content.length()); file.close(); return true;}
获取图片的存储位置,并且拿到请求报文中的body
字段,将body
字段内容写入磁盘进行存储
从服务器磁盘读取图片内容通过响应报文返回给客户端
bool Read(const std::string& file_name, std::string* content) { std::ifstream file(file_name.c_str()); if (!file.is_open()) { return false; } struct stat st; stat(file_name.c_str(), &st); content->resize(st.st_size); file.read((char*)content->c_str(), content->size()); file.close(); return true; }
通过操作系统提供的stat
进行拿到指定目录文件的大小,通过大小将文件内容全部读取,再通过httplib
提供的方法将内容返回给客户端
项目反思
1.对相同图片而名字不同的图片没有做特殊处理,会浪费一定的服务器磁盘空间
2.没有对url的使用做权限设置,其他人拿到url便可以直接访问图片 3.对于小图片的存储问题没有进行处理,对存储空间有一定的浪费转载地址:https://blog.csdn.net/a_hang_szz/article/details/100186633 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月10日 19时27分06秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
AcWing - 区间合并(贪心)
2019-04-28
AcWing - 单链表(模拟)
2019-04-28
AcWing - 双链表(模拟)
2019-04-28
AcWing - KMP字符串(KMP)
2019-04-28
来一个总结吧
2019-04-28
有趣的句子
2019-04-28
每天一道 python 面试题 - Python中的元类(metaclass) 详细版本
2019-04-28
Scrapy(6)Item loader 加载器详解
2019-04-28
每日一道python面试题 - Python的实例,类和静态方法揭秘
2019-04-28
今日金融词汇---新股新债前面的N,是什么?
2019-04-28
每日一道python面试题 - Python的实例,类和静态方法揭秘
2019-04-28
原创专辑来了
2019-04-28
好好做好你喜欢做的事情,并且把它做好
2019-04-28
反馈不足
2019-04-28
人生永远没有太晚的开始
2019-04-28
python 周日福利来了
2019-04-28
状态模式
2019-04-28
跳表SkipList
2019-04-28
跳跃表(Skip list)原理与java实现
2019-04-28
Java 常见的 30 个误区与细节
2019-04-28