图片服务器项目----My own photo world

前言

1 什么是图床?
简单来说,图床就是在云端的一块网络空间,我们可以将照片上传至云端,同时也可以随时访问云端的图片,我们在需要使用图片的时候,只需要拿到图片的链接 就可以将图片放在任何网页或工具中.这样一来我们就可以高效、便捷的管理和使用我们的图片。我们的私人图床就像是我们个人专属的私有图片空间。在这个图片世界只属于你。

2 为什么需要图床
对于一些内容输出者、文案创作者来说,他们的工作就是内容创作,俗称码字。同时呢,在码字的时候经常需要配图,就是在文字中插入图片,然而传统插图的方式很不方便,而且图片的复用率和移植性比较低,比如说,我们写的文字作品需要在多个平台发布,如果我们的图片存储在本地,或者某一个具体的平台上,这个时候由于平台不同,我们就需要重复机械的多次上传到不同平台,这是非常低效的,而如果我们使用图床将图片存储在云端的话,我们只需要将图片链接贴上去,这时我们的图片资源将可以被不同平台和工具使用,大大提高的图片的复用率、移植性、共享性,同时将文字创作者从繁琐的图片操作中解放出来,让他们把精力放在内容创作本身上去,这样可以大大提高他们的工作效率和生活的幸福感。

技术设计实现

1 整体的架构

我们图床项目的整体架构主要由两部分组成。

(1)第一部分是数据库的设计,这一部分主要设计表,来描述我们的图片。实现图片的存储管理。

(2)第二部分是服务器设计,这一部分主要实现具体的功能(对照片的增删改查)。

2 具体代码实现

数据库端设计(使用mysql)

设计一张表来描述图片的属性

设计一张表来描述图片的属性
create database if not exists image_system2;
use image_system2;

drop table if exists image_table;
create table image_table(
  image_id int not null primary key auto_increment,// 图片ID
  image_name varchar(256),//图片名
  size int,//图片大小
  upload_time varchar(50),//图片上传时间
  md5 varchar(128),// 图片的md5值
  type varchar(128),//图片格式
  path varchar(1024)//图片存储路径
);

insert into image_table values(null, 'test.png', 1024, '2019/08/26', 'aaaabbbbbccccc', 'png', 'data/test.png')

模拟数据库插入数据mysql_insert.cc

#include<cstdio>
#include<cstdlib>
#include<mysql/mysql.h>

// #include<mysql/mysql.h>  提供了操作函数 API


int main(){


  // 用mysql  API 来 操作数据库 
  //  1 先创建一个mysql 的句柄 
  MYSQL* mysql=mysql_init(NULL);   // 拿到遥控器
  // nclude<mysql/mysql.h>
  // 2  拿着句柄和数据库建立连接  

  if(mysql_real_connect(mysql,"127.0.0.1","root","1","image_system",3306,NULL,0)==NULL){
    //  数据库连接失败
    printf("数据库连接失败!%s\n",mysql_error(mysql));
    return 1;
  }

  // 3  设置编码格式(客户端)  服务端和客户端的编码格式必须匹配  
  mysql_set_character_set(mysql,"utf8"); // 不设置会出现数据乱码
  // 4 拼接SQL语句  (组织mysql 操作命令)
  char sql[4096]={0};
  sprintf(sql,"insert into image_table values(null,'test.png',1024,'2019/08/26','abcdef','png','data/test.png')");
  // 5 执行SQL 语句   ,负责客户端给服务器 发送数据的过程

  int  ret=mysql_query(mysql,sql);
  if(ret !=0){
    printf("执行 sql 失败! %s\n",mysql_error(mysql));
    return 1;// 1 为进程的退出码
  }
  // 6 关闭句柄
  mysql_close(mysql);

  return 0;
}

模拟实现数据库查询数据mysql_select.cc

#include<cstdio>
#include<cstdlib>
#include<mysql/mysql.h>

// #include<mysql/mysql.h>  提供了操作函数 API


int main(){


  // 用mysql  API 来 操作数据库 
  //  1 先创建一个mysql 的句柄 
  MYSQL* mysql=mysql_init(NULL);   // 拿到遥控器
  // nclude<mysql/mysql.h>
  // 2  拿着句柄和数据库建立连接  

  if(mysql_real_connect(mysql,"127.0.0.1","root","1","image_system",3306,NULL,0)==NULL){
    //  数据库连接失败
    printf("数据库连接失败!%s\n",mysql_error(mysql));
    return 1;
  }

  // 3  设置编码格式(客户端)  服务端和客户端的编码格式必须匹配  
  mysql_set_character_set(mysql,"utf8"); // 不设置会出现数据乱码
  // 4 拼接SQL语句  (组织mysql 操作命令)
  char sql[4096]={0};
  sprintf(sql," select * from image_table");
  // 5 执行SQL 语句   ,负责客户端给服务器 发送数据的过程

  int  ret=mysql_query(mysql,sql);
  if(ret !=0){
    printf("执行 sql 失败! %s\n",mysql_error(mysql));
    return 1;// 1 为进程的退出码
  }

  // 6 获取结果集合
  MYSQL_RES* result=  mysql_store_result(mysql
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值