实现Java+Vue上传图片到七牛云和从七牛云删除图片

RuoYi-Vue-Plus (若依上传文件配置、systemApplicationRunner 初始化配置、el实现上传文件及图片组件、阿里云OSS上传文件) 路径:src\views\system\oss\index.vue上传文件路径: src\components\FileUpload\index.vue实现技术:el-upload 实现该上传属性,具体api查看element官网选取文件 阅读详情

环境准备

开发环境
后端: JDK1.8, SpringBoot2.2.2.RELEASE, Maven3.6.3
前端: vue-element-admin4.4.0


相关链接
七牛云JavaSDK
七牛云存储区域域名
Element upload 上传组件文档
Antd Vue form 表单文档

后端操作

前端(客户端上传方式)通过组件上传图片到七牛云, 需要先从七牛云获取token, 这里用Java获取token, 前端拿到token才可以上传图片到七牛云, 删除的时候也是同理, 也需要先有token, 指定文件名称才能删除(上传是在服务端拿到token返回给前端通过前端上传图片, 删除是直接在服务端删除)

添加Maven依赖

<dependency>
	 <groupId>com.qiniu</groupId>
	 <artifactId>qiniu-java-sdk</artifactId>
	 <version>[7.2.0, 7.2.99]</version>
</dependency>

文档

上传文档
在这里插入图片描述
在这里插入图片描述
删除文档
在这里插入图片描述

文档说明, 获取token只需要三个数据 accessKey, secretKey, bucket, 这三个是在七牛云控制台获取, 简单获取的话前三个值可以按照文档直接定义变量写死, 本文中相关数据存储在数据库, 通过创建实体类对象获取 , 删除时还需要文件key值, key值是我们文件的名称, 本文中key通过前端发送post请求带到后端

accessKey, secretKey, bucket 获取, 登录七牛云后台
在这里插入图片描述
在这里插入图片描述

数据库表
在这里插入图片描述
Mybatis自动生成代码, 直接上Controller层…

/**
 * @author chen
 * @date 2020-07-12 22:06
 */

@RestController
@RequestMapping(value = "/api/qiniu")
public class QiNiuController {
    @Resource
    private IQiNiuService qiNiuService;

    @RequestMapping(value = "/get_token", method = RequestMethod.GET)
    public QiNiu getToken() {
        QiNiu qiNiu = new QiNiu();
        long expireSeconds = 600;
        StringMap putPolicy = new StringMap();
        // 数据表只有一条数据, 直接拿第一条
        QiNiuEntity qiniu = qiNiuService.selectAll().get(0);
        // accessKey = qiniu.getAk()
        // secretKey = qiniu.getSk()
        // bucket = qiniu.getBucket()
        Auth auth = Auth.create(qiniu.getAk(), qiniu.getSk());
        qiNiu.setToken(auth.uploadToken(qiniu.getBucket(), null, expireSeconds, putPolicy));
        return qiNiu;
    }

    @RequestMapping(value = "/del_file", method = RequestMethod.POST)
    public String delImg(@RequestBody String key) {
        //构造一个带指定 Region 对象的配置类
        Configuration cfg = new Configuration(Region.region0());
        QiNiuEntity qiniu = qiNiuService.selectAll().get(0);
        Auth auth = Auth.create(qiniu.getAk(), qiniu.getSk());
        BucketManager bucketManager = new BucketManager(auth, cfg);
        try {
            bucketManager.delete(qiniu.getBucket(), key);
        } catch (QiniuException ex) {
            //如果遇到异常,说明删除失败
            System.err.println(ex.code());
            System.err.println(ex.response.toString());
            return "删除失败";
        }
        return "删除成功";
    }
}

前端操作

前置数据:
domain: ‘https://upload-z2.qiniup.com’ // 七牛云的上传地址(华南区), 根据自己的实际区域配置, 区域对应的地址在文章开头的相关链接
qiniuAddr: ‘http://自己七牛云的图片外链地址’, // 七牛云的图片外链地址
前端内容和操作:
前端是一个带图片的表单, 点击上传图片图片直接上传到七牛云, 提交表单只是提交图片在七牛云的外链地址, 未提交表单时, 图片可以删除…具体还需要什么操作可以自己添加…文章开头留了文档的地址…

外链地址
在这里插入图片描述
前端代码

<template>
  <div class="app-container">
    <div>
      <a-form :form="form" :label-col="{ span: 3, minWidth: 100 }" :wrapper-col="{ span: 8 }" @submit="handleSubmit">
        <a-form-item label="XX名称">
          <a-input
            v-decorator="['xx_name', { rules: [{ required: true, message: 'xxxx!' }] }]"
          />
        </a-form-item>
        <a-form-item label="xx分类">
          <a-select
            v-decorator="[
              'xx_tag',
              { rules: [{ required: true, message: 'xxxx!' }] },
            ]"
            placeholder="xxxx"
            @change="handleSelectChange"
          >
            <a-select-option value="AA">
              AA
            </a-select-option>
            <a-select-option value="BB">
              BB
            </a-select-option>
          </a-select>
        </a-form-item>
        <a-form-item label="上传图片">
          <el-upload
            class="upload-pic"
            :action="domain"
            :data="qiniuData"
            :on-remove="handleRemove"
            :on-error="uploadError"
            :on-success="uploadSuccess"
            :before-remove="beforeRemove"
            :before-upload="beforeUpload"
            :on-exceed="handleExceed"
            :limit="1"
            :file-list="fileList"
            list-type="picture"
          >
            <a-button> <a-icon type="upload" /> 点击上传 </a-button>
            <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
          </el-upload>
        </a-form-item>
        <a-form-item label=" " :colon="false">
          <a-button type="primary" html-type="submit" class="btn-gutter">
            提交
          </a-button>
          <a-button @click="resetForm()">重置</a-button>
        </a-form-item>
      </a-form>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      formLayout: 'horizontal',
      form: this.$form.createForm(this, { name: 'form' }),  // antd vue 的form表单的数据绑定方式
      loading: false,
      qiniuData: {
        key: '', // 图片名字处理
        token: '' // 七牛云token
      },
      domain: 'https://upload-z2.qiniup.com', // 七牛云的上传地址(华南区)
      qiniuAddr: 'http://自己七牛云的图片外链地址', // 七牛云的图片外链地址
      uploadPicUrl: '', // 提交到后台图片地址
      fileName: '',
      fileList: []
    };
  },
  // 生命周期函数, 挂载后
  mounted() {
    this.getQiniuToken();
  },

  methods: {
    handleSelectChange(value) {
      console.log(value);
      setTimeout(() => {
        this.form.setFieldsValue({
          note: `${value === 'AA' ? 'AA' : 'BB'}!`
        });
      }, 100);
    },
    // 删除图片
    handleRemove(file, fileList) {
      this.$http.post('/api/qiniu/del_file',
        this.fileName)
        .then(response => {
          const { status} = response;
          if (status === 200) {
            this.fileName = '';
            this.uploadPicUrl = '';
          }
        })
        ['catch'](error => {
          console.log(error);
        });
    },
    // 文件超出个数限制
    handleExceed(files, fileList) {
      this.$message.warning(
        '当前限制选择 1 张图片,如需更换,请删除上一张图片在重新选择!'
      );
    },
    // 上传前
    beforeUpload(file) {
      const isPNG = file.type === 'image/png';
      const isJPEG = file.type === 'image/jpeg';
      const isJPG = file.type === 'image/jpg';
      const isLt2M = file.size / 1024 / 1024 < 2;

      if (!isPNG && !isJPEG && !isJPG) {
        this.$message.error('上传图片只能是 jpg、png、jpeg 格式!');
        return false;
      }
      if (!isLt2M) {
        this.$message.error('上传图片大小不能超过 2MB!');
        return false;
      }
      this.qiniuData.key = `pic_${new Date().getTime()}_${file.name}`;
    },
    uploadSuccess(response, file, fileList) {
      this.fileName = `${response.key}`;
      this.uploadPicUrl = `${this.qiniuAddr}/${response.key}`;
    },
    uploadError(err, file, fileList) {
      this.$message({
        message: '上传出错,请重试!',
        type: 'error',
        center: true
      });
    },
    beforeRemove(file, fileList) {
      // return this.$confirm(`确定移除 ${ file.name }?`);
    },
    // 提交数据到后台
    handleSubmit() {
      const data = this.form.getFieldsValue();
      console.log(data);
      // 自己定义提交内容
    },
    // 请求后台拿七牛云token
    getQiniuToken() {
      this.$http.get('/api/qiniu/get_token')
        .then(response => {
          const { status} = response;
          const { token } = response.data;
          if (status === 200) {
            this.qiniuData.token = token;
          }
        })
        ['catch'](error => {
          console.log(error);
        });
    },
    // 重置表单
    resetForm() {
      this.form.resetFields();
    }

  }
};
</script>

<style>
  .btn-gutter {
    display: inline-block;
    margin-right: 20px;
  }
</style>

WRF后处理避坑指南:从namelist配置到降水计算的全流程解析 本文提供了一份详尽的WRF模式后处理避坑指南,涵盖从理解wrfout文件结构、核心变量解析到累计降水计算与专业气象图绘制的全流程。重点解析了RAINC与RAINNC的正确处理方法,并分享了使用wrf-python库高效绘制位势高度叠加风场图、累计降水图等专业图表的实战技巧与代码,旨在帮助用户规避常见错误,提升后处理效率与图表质量。 阅读详情

相关推荐

华为云HCS解决方案笔记HUAWEI CLOUD Stack【面试篇】

华为云解决方案介绍、华为云服务介绍,华为云网络平面规划等

weixin_48375618的博客 1万+

vue java 上传图片,SpringBoot+Vue.js实现前后端分离的文件上传功能

这篇文章需要一定Vue和SpringBoot的知识,分为两个项目,一个是前端Vue项目,一个是后端SpringBoot项目。后端项目搭建我使用的是SpringBoot1.5.10+JDK8+IDEA 使用IDEA新建一个SpringBoot项目,一直点next即可项目创建成功后,maven的pom配置如下org.springframework.bootspring-boot-starterorg....

weixin_29762151的博客 653

Tesla V100 在 Windows 下的驱动选择与模式切换实战

本文详细解析了Tesla V100专业计算卡在Windows系统下的驱动安装与模式切换实战。针对设备管理器识别但任务管理器“隐身”的常见问题,文章指出其默认TCC模式为纯计算设计,并指导用户正确选择数据中心或GRID驱动。核心在于通过注册表修改或驱动选择,在高效的TCC模式与便于监控的WDDM模式间切换,同时提供了nvidia-smi命令行监控与AI框架测试等稳定使用方案。

weixin_29247219的博客 1806

七牛云:上传图片+删除图片

上传图片到七牛云 示例: /** * 上传图片到服务器 * @param upfile 文件对象 * @return 图片链接 * @throws IOException s */ public String uploadFile(MultipartFile upfile) throws IOException { InputStream inputStream = (InputStream) upfile.getInputSt

weixin_46202067的博客 1481

爬取中国空气质量在线监测分析平台

1.准备,爬取的链接地址 https://www.aqistudy.cn/html/city_detail.html 2.分析 a.当打开链接后,数据已经设置好了,说明里面大部分都是js通过ajax调用的, b.打开f12分析代码 通过捕获到的数据包,发现当前请求为ajax,携带着一个为d的参数且该请求携带的数据是加密过的,并且响应也是加密过的 c.这时候的问题就是...

Mr Right 6370

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

用VSCode搭建Vue.js开发环境及Vue.js第一个应用

m0_61961937的博客 1万+

七牛云上传与删除图片

基于thinkphp5.0 的七牛云 上传与删除图片 文件下载请前往github over!over!over! 转载于:https://www.cnblogs.com/yulongcode/p/10580928.html

weixin_30652879的博客 467

半导体器件仿真:双极型晶体管仿真_15.双极型晶体管的高级仿真技术

双极型晶体管(Bipolar Junction Transistor, BJT)是一种重要的半导体器件,广泛应用于放大、开关和调制等电路中。随着半导体技术的发展,对BJT的仿真要求也越来越高。本节将详细介绍双极型晶体管的高级仿真技术,包括器件模型的选择、仿真参数的优化、温度效应的考虑以及噪声分析等。

2401_87715305的博客 1243

thinkphp6 + 七牛云上传

添加表单 <form action="跳转地址" method="跳转方式" enctype="multipart/form-data"> <div class="form-group" > <label>请输入标题</label> <input type="text" class="form-control" name="text"> </div>

lh25946的博客 1379

EtherCAT主站SOEM -- 15 -- CIA402伺服驱动器子协议

以上就是EtherCAT主站SOEM – 15 – CIA402伺服驱动器子协议的内容。有不明白的地方欢迎留言;有建议欢迎留言,我后面编写文档好改进。创作不容,如果文档对您有帮助,记得给个赞。

常驻客栈的博客--嵌入式EtherCAT 2733

74、光谱成像在电子内窥镜及色彩理论中的应用

本文探讨了光谱成像在电子内窥镜中的应用及其与色彩理论的深度融合。通过分析FICE技术、色彩再现模型及胃黏膜光谱测量,展示了光谱信息在提升医学诊断准确性方面的潜力。同时,系统阐述了颜色的物理属性、标准表示方法、同色异谱现象、颜色测量技术(密度法与比色法)以及CIELAB等均匀颜色空间的构建原理。结合流程图与对比表格,梳理了从光信号获取到颜色处理的完整路径,并展望了人工智能与新型视觉模型在未来医疗成像与色彩科学中的发展方向。

g2h3i4j5的博客 152

java 存储png文件_vue图片上传及java存储图片(亲测可用)

1.前言在使用elementui的upload组件时,我一直无法做到上传的图片和其他数据一起提交。单纯的上传文件,java的存储图片的方式也有局限性。我知道的后端保存图片有两种方式:一种是直接存储到数据库中(base65和blob都能做到),一种是存储在服务器上的一个文件夹,数据库保存图片地址.开始我选择了base64 但是mysql貌似不允许这么长的存储长度(没有百度直接否掉了),后面就使用存储...

weixin_42500130的博客 563

YoloV8优化:感受野注意力卷积运算(RFAConv),效果秒杀CBAM和CA等 | 即插即用系列

感受野注意力卷积运算(RFAConv),解决卷积块注意力模块(CBAM)和协调注意力模块(CA)只关注空间特征,不能完全解决卷积核参数共享的问题

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 4264

springboot+mybatis使用七牛云实现图片上传

在后端开发中,图片上传是一个很常见的功能,由前端将图片信息传递给后端,后端将其重新命名并且上传到服务器进行储存,以保证其他用户也可以访问到此图片,这里我们使用七牛云的对象存储来储存图片

wct040923的博客 1455

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【前后端分离开发Springboot+Vue】-实现七牛云中图片的删除功能

在开发过程中要学会查看相关服务器的开发文档,由于使用的是七牛云的服务器来存储相关图片,所以查看七牛云的官方文档是很有必要的事情。这个页面说明了七牛云服务器删除文件需要的请求语法,只有咋们发送的删除命令符合语法七牛云在接收到之后才会正常的删除。这里只说明了Authorization,看似不全 ,但是其他的都是为公共 请求头,就是 每个请求 头都需要 要有的。

qq_33795322的博客 897

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

七牛云上传文件(VUE+SpringBoot实现)

本文主要介绍SpringBoot+Vue+ElementUI整合使用七牛云,提供了前后端代码,绝对的保姆级教程

weixin_46075209的博客 1760

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

解决图片上传七牛云出现脏数据问题

前言 项目里用vue上传组件,上传图片到七牛云,但是存在一个问题就是上传过程是一个单独的操作,与表单提交并无关系! 这样存在一个问题,当图片上传之后如果用户点击取消,虽然取消但图片已经上传到七牛云了,这些图片后续都不会再使用,我们如何取消这些无用的图片呢?我这里用的是redis做中间件! Redis中间件处理 我们每次上传完图片,将文件名放到redis的集合里;每次提交表单之后,把上传的文件名又上传到另一个集合里!也就是双集合,一个集合放已提交未确认一个集合放已提交已确认!这样我们可以对比差异,就知道哪些

Curtisjia的博客 911

七牛云 + Quartz:图片存储与定时清理

本文将详细讲解七牛云图片存储方案、套餐新增 / 分页功能,以及基于Quartz 定时任务实现垃圾图片自动清理,解决上传未提交产生的冗余文件问题,全程基于 Java+SpringBoot+Vue 实现。

小旭9527的博客 998

Springboot+Vue实现使用七牛云对象存储服务的图片上传、获取和删除功能

本文展示了用户头像管理与更新的前后端实现代码。前端包含图片上传、格式校验、大小限制(2MB以内)和头像更新功能,使用Vue+ElementUI实现交互。后端基于七牛云OSS实现文件存储,包含文件上传、删除等工具类方法,通过Spring Boot配置密钥等参数。关键功能包括:支持JPG/PNG/WEBP格式,上传成功后生成访问URL,删除原头像并更新新头像等。代码示例覆盖了从前端上传组件到后端云存储集成的完整流程,为开发者提供了用户头像管理系统的实现参考。

m0_46362064的博客 354

七牛云与element实现文件上传

1前端 页面 <el-row> <el-col :span="24"> <el-form-item label="上传图片"> <el-upload class="avatar-uploader" :action="backe...

tracyxiaoge的博客 545

SpringBoot+Vue图片上传

使用七牛云进行图片上传: 1.工具类QiniuUtils: 依赖 <dependency> <groupId>com.qiniu</groupId> <artifactId>qiniu-java-sdk</artifactId> <version>7.2.0</version> </dependency> /**

fengzi_0的博客 2188

VUE—实现文件上传(多文件),图片上传

asp.net大文件上传下载解决方案,.net大文件上传下载解决方案,webform大文件上传下载解决方案,jsp大文件上传下载解决方案,java大文件上传下载解决方案,JAVASCRIPT 大文件上传下载切片解决方案,JAVASCRIPT 大文件上传下载切割解决方案,JAVASCRIPT 大文件上传下载分割解决方案,JAVASCRIPT 大文件上传下载分块解决方案,JAVASCRIPT 大文件上传下载分片解决方案,web大文件上传下载解决方案,支持分片,分块,分段,切片,分割上传。示例中已经包含此目录。

alisky119的博客 740

SpringBoot + Vue整合七牛云

【代码】SpringBoot + Vue整合七牛云。

weixin_73292335的博客 304

DimpleBlog文件服务设计:本地存储与七牛云多策略上传架构解析

DimpleBlog 是一款基于 SpringCloudAlibaba 与 Vue 的开源个人博客系统,它的 **文件服务**(`dimple-file` 微服务模块)通过策略模式同时支持 **本地存储** 与 **七牛云对象存储** 两种上传方式,一套接口、按需切换。本文带你快速看懂这套多策略上传架构的设计思路与实现细节,无论你是想给自己的博客换存储方案,还是学习 Spring 文件服务设计,都

gitblog_00936的博客 720

七牛上传

HTML中: <div class="fileUpload-main"> <div class="upload-img"> <div class="imgItem" v-for="(item,index) in addForm.dialogImageUrl" :key="index"> <img :...

qq_40519017的博客 437

java对七牛云文件的增删改查语句_vue中七牛插件使用的实例代码

本文介绍了vue中七牛插件使用,我也正在学习,分享给大家,顺便留个笔记,废话不说了,如下:上传// import $ from 'jquery'// import "../../common/plugin/qiniu/moxie"// import "../../common/plugin/qiniu/plupload.dev"// import "../../common/plugin/qini...

weixin_30215717的博客 182
上一篇: Mysql根据datatime类型字段查询介于某个时间段之间的数据
下一篇: 蓝鲸运维平台5.1.28社区版离线部署
Noobovo
博客等级 码龄11年 57粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Noobovo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值