笔记搬来搬去,图片都裂了,每次移动一个笔记都得找半天之前的图片,老的笔记有时候都找不全,只剩下笔记碎片了(
所以一不做二不休,把家里限制的小nas给搬出来兼职做图床服务器。你问我为啥不用现有的厂商图床? 闲的
整体架构
可以看出流程其实很简单的。我们只需要一个存图片的接口、一个存的地方和PicGo
图床
实际上就是一个提供Nginx + 存储图片接口的服务 + 存储空间,自己写起来很快的
懒得写就直接用我的,只需要修改保存路径、nginx配置即可: https://github.com/Saltysth/SaltyCloudCanvas
注意一下接口返回值要是JSON格式就行
贴一下核心代码
// URL类里就一个String属性
public URL putImage(MultipartFile image) {
// 文件夹命名是按月份的
String format = DateUtil.format(new Date(), "yyyy_MM");
// 检查一下文件夹在不在 不在就补上
String prePath = localPath + "/" + format;
File f = new File(prePath);
if (!f.exists()) {
f.mkdirs();
}
//图片路径
String filepath = prePath + "/" + image.getOriginalFilename();
File file = new File(filepath);
//上传图片
try {
image.transferTo(file);
} catch (IllegalStateException | IOException e) {
log.error("存图片时出现异常!");
e.printStackTrace();
}
// 返回URL
String res = url + format + "/" + image.getOriginalFilename();
log.info("生成URL:" + res);
return URL.builder().url(res).build();
}
Nginx配置,为了能够访问到存储的位置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
# 修改成请求方
server_name localhost;
# 你想用的访问url格式
location /load_image {
# 实际存储位置
alias "/tmp/statics";
}
}
}
PicGo
官网:https://molunerfinn.com/PicGo/
直接下载安装就好,这里说的是PicGo App 不是 Core命令行。
安装好后先把我们需要的插件装好:搜索 [自定义],安装那个web-uploader 1.1.1
之后我们在图床设置这里填写刚才服务的接口参数,注意一下Json路径一定要填写正确哦,如果按照我的代码的话,这里填写 [url]
这样的话配置就完成了,在这里选择刚才的配置进行测试,没问题的话上传完就可以在相册中查看到图片了
外网相关
自己局域网做个内网隧道,或者搬到服务器上面后限定端口和域名就可以使用了。但是!一定要注意风险把控,外网意味着有人可能不怀好意,安全问题自己要小心负责,建议直接用各大厂家的图床,省事。如果有什么问题可以评论私信。
参考
- https://github.com/Saltysth/SaltyCloudCanvas
- https://molunerfinn.com/PicGo/