·第一次尝试将图片以外链的形式存储到又拍云,将url保存到数据库,这样不管什么设备都可以读取得到图片,而且不用考虑vite打包时候的烦人的静态资源问题,这里将又拍云存储和前后端代码和思路记录了一下,方便日后参考。(这里调用的api都是完成这个工作最基本的,详细api请查看官网文档)

一. 创建一个又拍云的云存储服务


  • 记得要实名认证才可以存哦
  • 创建完成后可以查看已创建的服务

二. springboot后端编写

  • 这里重点是展示几个重要接口,一些照片的预处理等等可以参考官网

1. 先导包

<dependency><groupId>com.upyun</groupId><artifactId>java-sdk</artifactId><version>4.1.3</version>
</dependency>

2. 直接写个controller演示

  • 这样我们就得到了url地址,想返回前端或者在数据库中修改都是可以的

三. 前端elementPlus上传

  • 从elementplus官网可以找到示例代码,在上面进行修改

说明:

  • 我这里是将上传框封装为了一个组件
  • 父组件需要传递currentImg(如果上传头像之前已经有头像的url了就预先显示的之前的头像url)
  • 还有postUrl,就是要请求的后端地址
  • 父组件中还有自定义事件getPicUrl,当前组件请求到了picUrl后就返回给父组件
  • 父组件拿到了postUrl就可以进行各种操作了,增删改都可以
  • 这里使用的request是已经封装好的axios请求
  • 后端和前端这两块在官方文档中还有更多的api,这里只是介绍一个基础用法

四. 前端代码(这个是写成单独一个组件,不考虑复用性的演示案例)

封装的request

// 引入axios
import axios from 'axios';// 创建axios实例
const httpService = axios.create({// url前缀-'http:xxx.xxx'// baseURL: process.env.BASE_API, // 需自定义baseURL:'http://localhost:8082',// baseURL:'http://47.96.16.81:8082',// 请求超时时间timeout: 3000 // 需自定义
});//添加请求和响应拦截器
// 添加请求拦截器
httpService.interceptors.request.use(function (config:any) {// 在发送请求之前做些什么config.headers.token=window.sessionStorage.getItem('token');return config;
}, function (error) {// 对请求错误做些什么return Promise.reject(error);
});// 添加响应拦截器
httpService.interceptors.response.use(function (response) {// 对响应数据做点什么return response;
}, function (error) {// 对响应错误做点什么return Promise.reject(error);
});/*网络请求部分*//**  get请求*  url:请求地址*  params:参数* */
export function get(url:string, params = {}) {return new Promise((resolve, reject) => {httpService({url: url,method: 'get',params: params}).then(response => {resolve(response);}).catch(error => {reject(error);});});
}/**  post请求*  url:请求地址*  params:参数* */
export function post(url:string, params = {}) {return new Promise((resolve, reject) => {httpService({url: url,method: 'post',data: params}).then(response => {console.log(response)resolve(response);}).catch(error => {console.log(error)reject(error);});});
}/**  文件上传*  url:请求地址*  params:参数* */
export function fileUpload(url:string, params = {}) {return new Promise((resolve, reject) => {httpService({url: url,method: 'post',data: params,headers: { 'Content-Type': 'multipart/form-data' }}).then(response => {resolve(response);}).catch(error => {reject(error);});});
}export default {get,post,fileUpload
}

上传组件

<template><el-uploadclass="avatar-uploader":http-request="uploadAction":show-file-list="false":before-upload="beforeUpload"><img v-if="imageUrl" :src="data:imageUrl" class="avatar" /><el-icon v-else class="avatar-uploader-icon"><Plus /></el-icon></el-upload>
</template><script lang="ts">
import {ref, defineComponent, reactive} from 'vue'
import { ElMessage } from 'element-plus'
import Request from "@/utils/request";
import type { UploadRawFile,} from 'element-plus';
export default defineComponent({setup(props,cxt){const imageUrl = ref()// 上传的函数const uploadAction = (option: any) => {let param = new FormData();param.append('file', option.file);Request.post(props.postUrl,param).then((res) => {console.log(res.data.picUrl)imageUrl.value=res.data.picUrl})}const beforeUpload = (file: UploadRawFile) => {const type = ['image/jpeg', 'image/jpg', 'image/png']if (type.indexOf(file.type) === -1) {ElMessage.error('上传的文件必须是JPG、JPEG、PNG三种之一!')return false} else if (file.size / 1024 / 1024 > 2) {ElMessage.error('图片大小不能超过2MB!')return false}return true}return{imageUrl,uploadAction,beforeUpload}}
})</script><style scoped>
.avatar-uploader .avatar {width: 178px;height: 178px;display: block;
}
</style><style>
.avatar-uploader .el-upload {border: 1px dashed var(--el-border-color);border-radius: 6px;cursor: pointer;position: relative;overflow: hidden;transition: var(--el-transition-duration-fast);
}.avatar-uploader .el-upload:hover {border-color: var(--el-color-primary);
}.el-icon.avatar-uploader-icon {font-size: 28px;color: #8c939d;width: 178px;height: 178px;text-align: center;
}
</style>

文章目录

  • 一. 创建一个又拍云的云存储服务
  • 二. springboot后端编写
    • 1. 先导包
    • 2. 直接写个controller演示
  • 三. 前端elementPlus上传
    • 说明:
  • 四. 前端代码(这个是写成单独一个组件,不考虑复用性的演示案例)
    • 封装的request
    • 上传组件

又拍云+springboot+element实现头像上传并将外链地址存到数据库相关推荐

  1. element 实现头像上传

    用element 实现头像上传,并且可以更换图片,我通过组件封装,加自定义v-model来实现 上传前: 上传后: 1.在页面中引入图片上传组件 <el-form-item label=&quo ...

  2. PHP上传图片文件到又拍云,如何把文件上传到又拍云

    PHP上传图片文件到又拍云,如何把文件上传到又拍云: https://www.tpxhm.com/adetail/593.html

  3. 保姆级别SpringBoot接入又拍云实现表单文件上传手册

    一.背景 本来打算使用七牛云进行文件上传的,由于自己一直没有实名认证(需要上传手持身份证就很烦),导致现在想用的时候用不了.另外自己所在的公司用的是又拍云,就试着看看又拍云能不能用,结果就有了这篇文章 ...

  4. 云服务器网站不能够上传视频,网站的视频要存到云服务器上吗

    网站的视频要存到云服务器上吗 内容精选 换一换 云服务器怎么选?云服务购买选择的时候主要根据以下方面来确定:服务器区域.宽带.核心数.线路.处理器.业务应用场景等方面来综合考虑.对于个人或者中小企业来 ...

  5. 如何用七牛云上传音乐生成外链

    收费的,不推荐使用,可以使用又拍云储存+CDN,再去申请又拍云联盟,一个月10g储存空间+15g流量,基本够用了 1.注册七牛云 2.新建对象储存 3.绑定自己的cdn域名 必须要备过案的域名 免费提 ...

  6. 使用 flickr API 上传并获取外链

    这两天写一个python的自动从word读取并向OJ的DIY添加题目的脚本,其中一个最痛苦的地方莫过于图片添加了.没被墙并且以前用过的图床只有flickr,第一次用API的方式写代码,一切都从零开始. ...

  7. Vue+SpringBoot+OSS+element实现图片上传服务器+图片展示墙

    1.技术选型: (1)Vue(前端) (2)Element(上传图片组件) (3)SpringBoot(后端) (4)Mybatis(数据库操作) (3)OSS(阿里云存储服务器) 2.实现效果概述: ...

  8. SpringBoot + Vue 头像上传案例

    头像上传 前言 后台系统一般会有用户个人信息的模块,为了增强用户的体验度,系统会开放自定义头像的功能,让用户可以上传自定义图片替代默认的系统头像.本文将通过SpringBoot+Vue来具体实现. 前 ...

  9. 微信头像下载并上传到阿里云OSS,PHP文件上传到阿里云OSS简单代码(OSS文件上传,微信头像下载,CURL下载文件,微信头像链接过期)

    (就这么个小事,有多少公司多少项目没做到!!) 微信公众号项目,后端获取到授权用户的微信头像后,要自行下载保存,不下载的话,微信返回的头像链接会在一段时间后过期,无法访问! 下面是我写的两个简单实用方 ...

最新文章

  1. asp.net 调用vc dll_“双通道”独立通讯,稀有钛膜单元,击音运动果VC真无线耳机...
  2. 个人管理:简单,我微博中的一句话,总有你喜欢的
  3. invoke与call
  4. elasticsearch index 之 put mapping
  5. SAP更新数据表的程序执行需要SE38后执行
  6. python基本字符_Python基本字符串,基础,之
  7. 灯塔浮标行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  8. java 8 map reduce_java8之Lambda表达式 4:MapReduce开发案例
  9. perl abs函数
  10. [面试]synchronized
  11. 逻辑斯蒂回归与梯度下降法
  12. 《密码学系列》—— 流密码
  13. 利用java对接阿里云sls服务(aliyun-log)做浏览记录
  14. android解析包时出现问题怎么解决方法,安装APK软件时发生“解析包时出现错误”的9大解决方法...
  15. Debug的心路历程
  16. Codec Engine 概要
  17. 解除外链屏蔽,对互联网行业意味着什么?
  18. IT时代周刊:2009年IT十大争议人物
  19. 孙悟空吃蟠桃c语言编程,孙悟空吃了几壶仙丹, 几颗蟠桃, 怎么就炼成金刚不坏之身了?...
  20. 【转】黑群晖NAS保姆级教程:手把手教您安装DS918+固件,开启显卡解码功能!3分钟玩转黑群NAS!

热门文章

  1. 萧乾升:4.12今日财经风险提示
  2. RTMP摄像头如何通过内存卡进行视频录像存储?
  3. 段码液晶屏笔段电压范围_可以用段码液晶屏的驱动方式驱动数码管屏吗?
  4. WebSocket实现一个聊天室
  5. python小游戏毕设 仿八分音符的声控小游戏设计与实现 (源码)
  6. 计算机组成原理期末考试知识点练习题(补发)
  7. WIZnet 以太网帽子大赛 2022
  8. 甜品网页制作HTML+CSS+JS
  9. ffmpeg命令行截取音频效率慢
  10. 哈啰顺风车初体验:安全漏洞仍存在 很难打到车