- 前言
- 1、Java具体实现
- 2、使用uPic图床工具自定义搭建图床
之前使用的图床工具一直都是gitee,奈何现在加了防盗链,很多图片文件无法访问,导致很多笔记图片博客等都无法访问,鉴于此,我搭建过七牛云图床(免费10G),阿里云oss。七牛云需要开通域名https(放弃了,有域名的还是可以去用七牛云),后来就去开通了阿里云OSS对象存储,需要存储空间收费,差不多9块钱40G一年,就买了5年的,但是奈何它还要单独的收取访问的流量费用。折腾来折腾去,为何不自己搭建弄一个图床,为何不用自己的服务器呢?
前提:需要租一台服务器
1、Java具体实现@RequestMapping("uploadImg")
public JSONObject uploadImg(HttpServletRequest request,
@RequestPart("file") MultipartFile file,
@RequestParam("format") String format,
@RequestParam("imgPath") String imgPath,
@RequestParam("ipAddress") String ipAddress) {
JSONObject jsonObject = new JSONObject();
try {
String ip = getIpAddress(request);
// 请求值不能为空才能上传
if (Objects.nonNull(file) && StringUtils.isNoneBlank(imgPath) && StringUtils.isNoneBlank(format) && StringUtils.isNoneBlank(ipAddress)) {
String fileName = imgPath + format;
File uploadFile = new File(fileName);
// 保存文件,使用此方法保存必须要绝对路径且文件夹必须已存在,否则报错
file.transferTo(uploadFile);
jsonObject.put("path", ipAddress + format);
log.info("来自ip:{} 的请求,文件访问路径:{}", ip, ipAddress + fileName);
}
} catch (Exception e) {
log.error("uploadImg is error:", e);
}
return jsonObject;
}
项目是使用的SpringBoot项目,代码其实没多少,项目也已经开源,Git链接:https://gitee.com/yuankaiqiang0/file
打包后发布运行到自己的服务器上,访问时,使用
2、使用uPic图床工具自定义搭建图床项目运行以后使用uPic工具进行自定义配置
-
API地址:SpringBoot项目中的接口路径,如果要部署到服务器上,则填写服务器上的ip地址即可,有域名的填写上服务器对应的域名。
-
请求方式:POST或者PUT。
-
文件字段名:代码MultipartFile属性使用的@RequestPart(“file”)中使用的名称,必须使用@RequestPart,为啥,因为我试过使用其它的注解例如@RequestParam不行。
-
URL路径:接口返回的JSON类型数据中返回的字段
#接口返回数据类型 { "data": http://127.0.0.1:9999/img/123.jpg } #接收时使用["data"]方式进行接收
-
点击其它字段:
-
Header:需要增加content-type为multipart/form-data,对应接口中使用的@RequestPart
-
Body:这三个字段对应的都是接口中必须要传递的属性,其中的imgPath和ipAddress可以根据自己的需要进行更改。我这里的imgPath使用的路径也就是我服务器中数据存储对应的路径,可以更改为自己存储路径。ipAddress为访问图片时需要访问的路径信息,具体实现是在代码中进行了拼接,也就是ipAddress+format的路径。你可能会好奇我这里为什么ip地址后面有img,其实img是我/home/file/文件路径下面的一个文件夹,这些都可以根据自己的需要进行自定义的更改。
@Configuration public class WebMvcConfiguration implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**") .addResourceLocations("file:/home/file/"); } }
-
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)