1.x-file-storage官网 https://x-file-storage.xuyanwu.cn/#/
2. 打开华为云官网 https://activity.huaweicloud.com/
① 左上角菜单栏中选择产品,输入obs存储
② 根据自己的业务需求选择规格即可
③ 购买完成,去控制台创建桶,获取endPoint和访问域名等参数
④ accesskey 和secretkey 在右边用户头像下拉菜单中的我的凭证中获取
3. 若依后端简单使用,这里以华为云obs为例
① 首先到ruoyi-common中导入maven坐标
<!-- x-file-storage -->
<dependency>
<groupId>org.dromara.x-file-storage</groupId>
<artifactId>x-file-storage-spring</artifactId>
<version>2.2.1</version>
</dependency>
<!-- 华为云sdk -->
<dependency>
<groupId>com.huaweicloud</groupId>
<artifactId>esdk-obs-java</artifactId>
<version>3.22.12</version>
</dependency>
② 然后在ruoyi-admin中的application.yaml中配置参数
# 文件上传
dromara:
x-file-storage: #文件存储配置
default-platform: hwy-obs-1 #默认使用的存储平台 与下面你配置的platform一致
thumbnail-suffix: ".min.jpg" #缩略图后缀,例如【.min.jpg】【.png】
#对应平台的配置写在这里,注意缩进要对齐
huawei-obs:
- platform: hwy-obs-1
enable-storage: true # 启用存储
accessKey: your accessKey
secretKey: your secretKey
endPoint: your endPoint
bucketName: 桶名称
domain: 访问域名,例如:“http://127.0.0.1:8030/file/”,注意后面要和 path-patterns 保持一致,“/”结尾,本地存储建议使用相对路径,方便后期更换域名
basePath: images/ # 存储的文件夹目录
③ 在ruoyi-admin中的controller包下的commonController中修改通用上传代码,如下图所示
@Autowired
private FileStorageService fileStorageService;
/**
* 通用上传请求(单个)
*/
@PostMapping("/upload")
public AjaxResult uploadFile(MultipartFile file) throws Exception
{
try {
String objectName = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd")) + "/";
// 上传图片,成功返回文件信息
FileInfo fileInfo = fileStorageService.of(file).
setPath(objectName).upload();
// 设置返回结果
AjaxResult ajax = AjaxResult.success();
ajax.put("url", fileInfo.getUrl());
ajax.put("fileName", fileInfo.getUrl()); //注意:这里的值要改为url,前端访问的地址,需要文件的地址 而不是文件名称
ajax.put("newFileName", fileInfo.getUrl());
ajax.put("originalFilename", file.getOriginalFilename());
return ajax;
} catch (Exception e) {
return AjaxResult.error(e.getMessage());
}
}
4.启动报错解决
① okhttp3.RequestBody.create(java.lang.String,okhttp3.MediaType)
问题原因:因spring-boot约定了三方依赖的版本,在spring-boot框架中引入OBS SDK时,会将SDK所指定的三方依赖okhttp3的版本由4.8.0降至3.14.9,导致无法获取到指定方法。可以通过使用集成了三方依赖的bundle版SDK来进行规避,或在您的项目中显示的引用 4.8.0 版本的okhttp3。
在ruoyi-common中显示导入4.8.0的okhttp3包依赖
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>4.8.0</version>
</dependency>
重新启动,问题解决
② 报错xxx存储平台无法找到
在ruoyi-admin中引入对应存储平台的sdk
以上就是本文内容,如各位有遇到其他问题,欢迎私聊探讨。
标签:插件,为例,storage,ruoyi,okhttp3,ajax,file,obs From: https://blog.csdn.net/weixin_64878779/article/details/142604480