首页 > 其他分享 >若依前后端分离版集成x-file-storage插件实现文件上传(以华为云obs为例)

若依前后端分离版集成x-file-storage插件实现文件上传(以华为云obs为例)

时间:2024-09-29 20:20:43浏览次数:10  
标签:插件 为例 storage ruoyi okhttp3 ajax file obs

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

相关文章

  • notepad++安装HexEditor插件查看二进制文件
    notepad++安装HexEditor插件查看二进制文件前言有时候我们需要分析二进制文件,但是分析二进制文件直接用编辑器查看会出现乱码的情况,本文在notepad++软件上安装一个HexEditor插件,可方便分析二进制文件。一、下载HexEditor插件打开下面的网址,下载HexEditor插件https://sou......
  • WordPress产品分类添加,自动排序插件
    效果图如下  目前这个预览菜单这个效果有点问题,但是不影响实际排序,有懂源码的朋友可以自行修改一下,目录结构menu-assetsmenu.cssmenu.jsmenu.php源码如下menu.php文件<?php/***PluginName:菜单整理*Description:将WooCommerce......
  • uniapp [安卓苹果App端] - 详细实现手机蓝牙连接打印机及打印票据小票/标签/面单/热敏
    前言网上的教程乱七八糟,文本提供优质示例代码。在uni-appApp端(安卓APP|苹果APP)开发中,详解实现“手机蓝牙连接并使用蓝牙打印机”,uniAppApp端手机使用蓝牙连接打印机进行打印的相关功能,uniapp苹果安卓app实现开启蓝牙并搜索附近范围的蓝牙打印机对接全流程,支持打印......
  • 共享单车轨迹数据分析:以厦门市共享单车数据为例(六)
    副标题:.基于POI数据的站点功能混合度探究——以厦门市为例(一)为了保证数据时间尺度上的一致性,我们从互联网上下载了2020年的POI数据,POI数据来源于高德地图API平台,包括名称、大小类、地理坐标等。并将高德地图POI数据的火星坐标系GCJ-02统一转换为通用的WGS-84地理坐标系,......
  • Deepseek AI 与插件Continue代码智能助手
       Deepseek的代码AI能力智能助手在代码生成与补全、代码修复与优化、智能问答。似乎是替代CursorAI的方案,以下介绍是VSCODE中安装插件Continue准备工作DeepseekAPIaccessKey申请配置config.json配置如下{"completionOptions":{"BaseCompletionOptions":{"tempe......
  • nexus 美化桌面插件安装使用
    请看下面效果图,就是精美的桌面插件软件下载链接:https://pan.baidu.com/s/11jKd7hSYFquR6eiU-8Y6dw 提取码:ehye下载完会得到一个文件夹,打开文件夹会看到nexus.zip压缩包打开,然后点击NexusSetup.exe进行安装,一路默认就可以。安装好之后点击运行Nexus。这时候你就会发现桌......
  • Stable Diffusion绘画 | AnimateDiff:用AI制作动画(附插件安装包)
    使用AnimateDiff插件,我们只需要按时间节点,输入不同的提示词,就可以非常轻松地生成一系列丝滑的动画。AnimateDiff的底层技术框架,是由上海人工智能实验室&香港中文大学&斯坦福大学联合研发的,它能很好地结合SD的各种模型,以及配合ControlNet和Upscale来生成出......
  • 一些超好用的 GitHub 插件和技巧
    聊聊我平时使用GitHub时学到的一些插件、技巧。‍‍浏览器插件在我的另一篇博客浏览器插件推荐里提到过跟GitHub相关的一些插件,这里重复下:Sourcegraph:在线打开项目,方便阅读,将GitHub变得和IDE一般,集成各种功能,参考爱了爱了,这个GitHub的Chrome神仙插件把我整的......
  • 关于VSCode里需要用的一些插件总结
    在使用vscode编辑器的时候,经常需要安装一些插件来帮助我们进行开发,现在对可能用到的一些插件进行总结1.openinbrowser-------------在浏览器中打开,如果不装这个,无法在右键的时候在浏览器运行(必备)2.AutoRenameTag--------------修改HTML标签时,自动修改匹配的标签3. Aut......
  • 人人都能手写的chrome插件,帮我省了1000多块钱
    在网购的世界里,价格波动常常让人感到无奈。《京东价保》插件通过定时监控已购商品价格变化,降价自动申请京东价格保护,帮我省下了不少钱。作为一个前端开发工程师,这让我意识到,手写一个浏览器插件是一件很有趣且有意义的事。于是,我决定尝试自己动手,开发一个简单的二维码生成器插件,各位......