Skip to content
📌 本地图床,使用SpringBoot开发,面向用户的网络图床服务。适用于自用 | 商用图床,配置简单,不依赖数据库 | 📝 URL图片转存功能 | 📈 历史记录功能 | 🍱 支持选择、拖拽、粘贴上传 | ⚗️ 自动生成img标签、Markdown标签
Java
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.idea
src
.DS_Store
.gitattributes
.gitignore
LICENSE
README.md
mvnw
mvnw.cmd
picuang.iml
pom.xml

README.md

Picuang

📌 本地图床,使用SpringBoot开发,面向用户的网络图床服务。https://pic.stackoverflow.wiki

🔧 如果你遇到任何问题,都可以通过我个人签名中的联系方式与我沟通!

🔖 Picuang使用Apache 2.0协议,您可以自由进行个人/商业使用,但因各种原因造成的后果雨我无瓜请自行承担。

原理

Picuang是一款根图床WEB程序。用户可以向Picuang中上传jpg/jpeg/png/svg/gif图片,Picuang会自动将图片上传至Picuang的运行目录中。

Picuang会将用户上传的图片保存到本地,而非将图片上传到其它公共容器中(例如七牛、新浪什么的),适用于想搭建一个提供图床存储、读取服务的同学

功能

  • 选择、拖拽或粘贴图片,自动上传至Picuang服务器中

  • 自动生成图片对应的URL格式链接HTML标签格式链接Markdown格式链接

  • 图片链接克隆(转存)功能,可输入图片的URL,Picuang会自动下载并保存到Picuang服务器中

  • 单IP上传自动阻流器,上传过快会排队上传,减轻服务器压力,防止恶意上传/克隆攻击

  • 历史记录功能(按IP地址读取,所以更换IP地址后无法查询)

  • Picuang管理员后台设置界面(基于配置文件存储,不依赖数据库)

  • 仅管理员可上传功能(默认关闭,必须在后台登录后才能上传)

🌐 使用技术

开发: Intellij IDEA

后端: Thymeleaf Spring Boot

前端: JQuery Bootstrap Axios

🔍 体验 && 体验GIF

可以来这里直接体验哦~

GIF加载较慢,你也可以访问这里查看(该图片也采用了我自搭建的公共Picuang图床存储)

picuangdemo.gif

📄 使用方法

Picuang不需要配置数据库,如果你使用IDEA直接运行本项目或是用Maven打包为war包,它会自动将图片上传到网站根目录中的uploadImages目录中。你可以在UploadController.java中找到适配代码:

String path = ClassUtils.getDefaultClassLoader().getResource("").getPath() + "static/uploadImages/";

Picuang读取了当前网站的根目录。由于项目使用了Thymeleaf,所以static是存储静态资源的根目录。

打包为war

image.png

调整上传文件大小限制

在使用前,你可以在application.properties文件中调整文件的限制:

#重要!Picuang图床设置
//单个文件传输文件大小限制
spring.servlet.multipart.max-file-size=20MB
//单次传输文件大小限制
spring.servlet.multipart.max-request-size=20MB
#Picuang图床设置结束

同时,你设置的限制大小会自动同步到前端的标题当中,用户可以直观地看到文件上传的大小限制。

🚨 注意事项

如果你使用了Tomcat 或 Tomcat和Nginx搭载了Picuang,你可能会遇到上传失败的情况。请按照下方的几个解决办法尝试:

  1. Tomcat:context.xml

修改conf/context.xml文件,在</Context>之前添加一行:

<Resources cachingAllowed="true" cacheMaxSize="100000" />
  1. Tomcat:server.xml

修改conf/server.xml文件,在你使用端口的Connector配置中添加一条:

maxPostSize="209715200"
  1. Nginx

在你的location / {下添加一行:

client_max_body_size 100m;
You can’t perform that action at this time.