1.常见图片存储方案
图片存储方案 | 优点 | 缺点 | 案例 | |
1 | 直接将图片保存到服务的硬盘 | 开发便捷,成本低 | 扩容困难 | SpringMVC中的文件上传:MultiPartFile |
2 | 使用开源的分布式文件存储系统 (或者使用nginx搭建图片服务器) |
容易实现扩容 | 开发复杂度稍大 |
FastDFS、HDFS、MinIO等 |
3 | 使用第三方的 云存储服务 | 开发简单,免维护,拥有强大功能 | 付费 | 阿里云、七牛云等 |
应用服务器:负责部署我们的应用
数据库服务器:运行我们的数据库
文件服务器:负责存储用户上传文件的服务器
分服务器处理的目的:让服务器各司其职,从而提高我们项目的运行效率。
2.七牛云 图片存储(使用第三方的 云存储服务)
1.Maven依赖坐标
<!--七牛云 图片存储 依赖坐标-->
<dependency>
<groupId>com.qiniu</groupId>
<artifactId>qiniu-java-sdk</artifactId>
<version>7.2.0</version>
</dependency>
2.QiniuUtils 七牛云工具类
七牛云官网代码拷贝地址:
七牛云>文档>开发者中心>对象存储>SDK 下载>Java SDK:拷贝 上传文件和删除文件 代码
上传文件:
1.上传本地文件,直接指定文件的完整路径即可上传
2.字节数组文件上传,可以支持将内存中的字节数组上传到空间中
删除文件:
3.删除空间中的文件
import com.google.gson.Gson;
import com.qiniu.common.QiniuException;
import com.qiniu.common.Zone;
import com.qiniu.http.Response;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.Configuration;
import com.qiniu.storage.UploadManager;
import com.qiniu.storage.model.DefaultPutRet;
import com.qiniu.util.Auth;
/**
* QiniuUtils 七牛云工具类
*/
public class QiniuUtils {
// AK(七牛云:个人中心/密钥管理/Access Key)
// SK(七牛云:个人中心/密钥管理/Secret Key)
private static final String ACCESSKEY = "3BdL5o_LCoBFSBuhrlHOIxB5WocQFHFR-Jmv43fv";
private static final String SECRETKEY = "eJdCoCKzokBpnc4nqQNCDqX1A1q-wX4l0K2OR3f6";
// 存储空间名称(七牛云:空间管理/空间名称为:myneme)
// 外链域名:(七牛云:空间名称/文件管理/外链域名为:r7ykbz6f3.hn-bkt.clouddn.com)
private static final String BUCKET = "myneme";
public static final String DOMAIN= "http://r7ykbz6f3.hn-bkt.clouddn.com/";
/**
* 文件上传(七牛云:上传本地文件,直接指定文件的完整路径即可上传)
* @param filePath
* @param fileName
*/
public static void uploadQiniu(String filePath,String fileName){
//七牛云的存储区域:
// zone0() 代表是 华东地区
// zone1() 代表是 华北地区
// zone2() 代表是 华南地区
//构造一个带指定Zone对象的配置类
//Region.region2() 是7.7版本
//Configuration cfg = new Configuration(Region.region2());
//Zone.zone2() 是7.2版本(当前使用的是7.2版本)
Configuration cfg = new Configuration(Zone.zone2());
UploadManager uploadManager = new UploadManager(cfg);
Auth auth = Auth.create(accessKey, secretKey);
String upToken = auth.uploadToken(bucket);
try {
Response response = uploadManager.put(filePath, fileName, upToken);
//解析上传成功的结果
DefaultPutRet putRet =
new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
} catch (QiniuException ex) {