vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库

这篇具有很好参考价值的文章主要介绍了vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.阿里云

注册登陆就不讲了,登陆进去后如下操作,另外如果服务器进行了拦截过滤的操作的话记得放行。

1.

进入对象存储OSS 创建一个新的Bucket

随后点击新建的bucket

vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库

2.去访问RAM

前往RAM控制台

vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库

3.去创建用户 

vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库

4.创建密匙

vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库

vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库

5.随后返回RAM控制台

 给用户增加权限,文件上传所需权限,需要带含有OSS的权限。

vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库

6.随后进入用户将自己创建的密匙赋予给该用户,目的就是为了更安全 

 vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库

vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库

好的,到此为止,阿里云的配置就完成了,windows系统的操作就到此为止了,接下来是ideal的操作

 二.后台配置

2.1导入依赖

 <dependency>
            <groupId>com.aliyun.oss</groupId>
            <artifactId>aliyun-sdk-oss</artifactId>
            <version>3.10.2</version>
        </dependency>

 2.2所需工具类

ResponseResult

package com.dmdd.javasecuritypractice.util;

import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Data;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 响应数据封装对象
 */
@Data
public class ResponseResult<T> {

    /**
     * 状态信息
     */
    private ResponseStatus status;

    /**
     * 数据
     */
    private T data;

    public ResponseResult(ResponseStatus status, T data) {
        this.status = status;
        this.data = data;
    }

    /**
     * 返回成功对象
     * @param data
     * @return
     */
    public static <T>  ResponseResult<T> ok(T data){
        return new ResponseResult<>(ResponseStatus.OK, data);
    }

    /**
     * 返回错误对象
     * @param status
     * @return
     */
    public static ResponseResult<String> error(ResponseStatus status){
        return new ResponseResult<>(status,status.getMessage());
    }

    /**
     * 返回错误对象
     * @param status
     * @return
     */
    public static ResponseResult<String> error(ResponseStatus status,String msg){
        return new ResponseResult<>(status,msg);
    }

    /**
     * 向流中输出结果
     * @param resp
     * @param result
     * @throws IOException
     */
    public static void write(HttpServletResponse resp, ResponseResult result) throws IOException {
        //设置返回数据的格式
        resp.setContentType("application/json;charset=UTF-8");
        //jackson是JSON解析包,ObjectMapper用于解析 writeValueAsString 将Java对象转换为JSON字符串
        String msg = new ObjectMapper().writeValueAsString(result);
        //用流发送给前端
        resp.getWriter().print(msg);
        resp.getWriter().close();
    }
}

OSSutils

package com.dmdd.javasecuritypractice.util;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSBuilder;
import com.aliyun.oss.OSSClientBuilder;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.net.URL;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;

/**
 * OSS文件上传工具类
 */
public class OSSUtil {

    // Endpoint以杭州为例,其它Region请按实际情况填写。
    private static String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
    // 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
    private static String accessKeyId = "LTAI5M";
    private static String accessKeySecret = "**";
    private static String bucketName = "**";
    //目录名
    public static String dir = "images";

    /**
     * 文件上传
     * @param inputStream
     * @param fileName
     */
    public static void upload(InputStream inputStream, String fileName){
        OSS oss = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        oss.putObject(bucketName,dir +"/"+ fileName,inputStream);
        oss.shutdown();
    }

    /**
     * 获得文件URL
     * @param fileName
     * @return
     */
    public static String getURL(String fileName){
        OSS oss = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
        //设置过期时间
        LocalDateTime time = LocalDateTime.now().plusDays(100);
        Date expiration = Date.from(time.atZone( ZoneId.systemDefault()).toInstant());
        URL url = oss.generatePresignedUrl(bucketName, dir +"/"+ fileName, expiration);
        oss.shutdown();
        return url.toString();
    }

    public static void main(String[] args) throws FileNotFoundException {
        OSSUtil.upload(new FileInputStream("E:\\img\\xing.png"),"xing.png");
        System.out.println(OSSUtil.getURL("xing.png"));
    }
}
private static String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 云账号AccessKey有所有API访问权限,建议遵循阿里云安全最佳实践,创建并使用RAM子账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建。
private static String accessKeyId = "LTAI5tHcwsYkxjt6YxgrEVAM";
private static String accessKeySecret = "WeBHibTdv1ybo44MlEWxo7VpCXyO1l";
private static String bucketName = "dmddjly";

设置文件上传到哪个bucket 以及 该bucket设置的秘钥。

还有设置bucket所选的地区 我选的是华东1(杭州)

 2.3UpLoadController

package com.dmdd.javasecuritypractice.controller;

import com.dmdd.javasecuritypractice.util.OSSUtil;
import com.dmdd.javasecuritypractice.util.ResponseResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

@RestController
public class UploadController {
@PostMapping("/upload")
    public ResponseResult<String> upload(MultipartFile file) throws IOException{
        //上传OSS
        OSSUtil.upload(file.getInputStream(),file.getOriginalFilename());
        //获得url
        String url = OSSUtil.getURL(file.getOriginalFilename());
        return  ResponseResult.ok(url);
    }
}

调用工具类方法,实现文件上传。 

三. vue脚手架实现图片上传

3.1调用elementui的文件上传功能

vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库

<el-form-item label="头像" :label-width="formLabelWidth">
        <el-upload
            class="avatar-uploader"
            action="http://localhost:8080/upload"
            :show-file-list="false"
            :on-success="handleAvatarSuccess"
            :before-upload="beforeAvatarUpload">
          <img v-if="user.icon" :src="user.icon" class="avatar">
          <i v-else class="el-icon-plus avatar-uploader-icon"></i>
        </el-upload>
        </el-form-item>

1. action 是选择图片后将会发送的请求

2.:on-success 成功后执行的事件

3.:before-upload 发送图片前执行的事件,可以进行图片类型 ,大小的限制

3.2两个事件: 

//上传图片成功回调
    handleAvatarSuccess(res, file) {
      console.log(res)
      this.user.icon = res.data;
    },
    //上传前检查
    beforeAvatarUpload(file) {
      const isJPG = file.type === 'image/jpeg';
      const isLt2M = file.size / 1024 / 1024 < 2;

      if (!isJPG) {
        this.$message.error('上传头像图片只能是 JPG 格式!');
      }
      if (!isLt2M) {
        this.$message.error('上传头像图片大小不能超过 2MB!');
      }
      return isJPG && isLt2M;
    },

 最终结果

vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库文章来源地址https://www.toymoban.com/news/detail-471344.html

到了这里,关于vue脚手架 element-ui spring boot 实现图片上传阿里云 并保存到数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue(Vue脚手架)

    Vue官方提供脚手架平台选择最新版本: 可以相加兼容的标准化开发工具(开发平台) 禁止:最新的开发技术版本和比较旧版本的开发平台   Vue CLI 🛠️ Vue.js 开发的标准工具 https://cli.vuejs.org/zh/ c:cmmand l:line i:interface 命令行接口工具   在cmd中查看vue是否存在cli  全局安

    2024年02月01日
    浏览(42)
  • Vue 脚手架

    ├── node_modules ├── public │ ├── favicon.ico: 页签图标 │ └── index.html: 主页面 ├── src │ ├── assets: 存放静态资源 │ │ └── logo.png │ │── component: 存放组件 │ │ └── HelloWorld.vue │ │── App.vue: 汇总所有组件 │ │── main.js: 入口文件 ├── .gi

    2024年03月24日
    浏览(46)
  • 使用Vue脚手架

    (193条消息) 第 3 章 使用 Vue 脚手架_qq_40832034的博客-CSDN博客 说明 1.Vue脚手架是Vue官方提供的标准化开发工具(开发平台) 2.最新的版本是4.x 3.文档Vue CLI脚手架(命令行接口) 具体步骤 1.如果下载缓慢请配置npm淘宝镜像 npm config set registry http://registry.npm.taobao.org 2.全局安装 @v

    2024年02月13日
    浏览(61)
  • 使用Vue脚手架2

    ref属性 src/components/SchoolName.vue   src/App.vue   props配置项 src/App.vue src/components/StudentName.vue   注意:当props中与当前组件配置同名时, props中的配置优先级高于当前组件  mixin混入 1. 组件和混入对象含有同名选项 时,这些选项将以恰当的方式进行“合并”,在发生冲突时以 组件

    2024年02月12日
    浏览(45)
  • Vue脚手架搭建项目

    一、 安装Node.js (一) 注意事项 1. 注意电脑系统版本以及位数,按照自己电脑的环境下载相应的Node.js安装包 2. 确定运行项目的Node.js版本和npm版本,避免后期因为版本不同而产生的一些差异问题 3. 在官网下载Node安装包时请下载稳定版(或不同版本的稳定版),正确区分稳定版

    2024年02月09日
    浏览(48)
  • vue脚手架创建项目

    npm install -g @vue/cli 如果报错可以尝试使用cnpm vue -V vue create 项目名称 输入y 上下选中选项 Manually select features (自由选择),回车 vue 版本的选择 其他按需要选择

    2024年02月05日
    浏览(64)
  • 如何搭建vue脚手架

    使用 create-vue 脚手架创建项目 create-vue参考地址:GitHub - vuejs/create-vue: 🛠️ The recommended way to start a Vite-powered Vue project 步骤: 执行创建命令 2.选择项目依赖类容 安装:项目开发需要的一些插件 必装: Vue Language Features (Volar)  vue3语法支持 TypeScript Vue Plugin (Volar)  vue3中更好的

    2023年04月14日
    浏览(48)
  • vue脚手架文件说明

    node_modules 都是下载的第三方包 public/index.html 浏览器运行的网页 src/main.js webpack打包的入口 src/APP.vue Vue页面入口 package.json 依赖包列表文件

    2024年02月15日
    浏览(47)
  • VUE2 脚手架搭建

    M : Model 模型层(业务逻辑层)主要包含 JS 代码,用于管理业务逻辑的实现 V : View 视图层 主要包含 HTML/CSS 代码,用于管理 UI 的展示 VM : ViewModel (视图模型层)用于将 data 与视图层的 Dom 进行动态绑定 ①脚手架环境安装 制作web项目,从小作坊状态转向工程化开发的状态

    2024年02月09日
    浏览(62)
  • Vue3脚手架笔记

    Vue模板语法有2大类 : 1.插值语法: 功能:用于解析标签体内容。 写法:{{xxx}},xxx是js表达式,且可以直接读取到data中的所有属性。 ** 2.指令语法:** 功能:用于解析标签(包括:标签属性、标签体内容、绑定事件…)。 举例:v-bind:href=“xxx” 或 简写为 :href=“xxx”,xxx同

    2024年01月24日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包