Vue(web)服务端签名上传阿里云oss

4 篇文章 0 订阅

Vue(web)服务端签名上传阿里云oss

1、示例

oss文档

<template>
  <div class="upload-container">
    <div style="padding-bottom: 10px">仅支持 .png,.jpg 格式的图片文件</div>
    <el-upload
      :multiple="false"
      :show-file-list="false"
      :http-request="upload"
      drag
      action
      accept=".png,.jpg"
    >
      <i class="el-icon-upload" />
      <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
    </el-upload>
  </div>
</template>

<script>
import axios from "axios";
export default {
  data() {
    return {
      imageUrl: "",
    };
  },
  methods: {
    upload({ file }) {
      this.$request({
        url: "", // 获取服务端签名的URL
        params: {
          dir: "你获取签名的设置的路径",
        },
      }).then((res) => {
        /**
         *res.data = {
         *	dir:'',
         *	accessid:'',
         *	policy:'',
         *	signature:'',
         *}
         */
        this.axiosOSS(res.data, file);
      });
    },
  },
  axiosOSS(sing, file) {
    const dir = 设置上传oss的路径;
    const formData = new FormData();
    formData.append("key", sing.dir + `${dir}`);
    formData.append("OSSAccessKeyId", sing.accessid);
    formData.append("policy", sing.policy);
    formData.append("signature", sing.signature);
    formData.append("success_action_status", "200"); // 上传成功返回的状态码,不设置则是204
    formData.append("file", file); // 一定在最后
    return new Promise((resolve, reject) => {
      axios({
        method: "POST",
        url: "oss域名",
        data: formData,
        headers: {
          "Content-Type": "image/jpeg", // 图片格式,可以设置视频或者音频格式
        },
      })
        .then((response) => {
          let data = {};
          if (response.status == 200) {
            const imageUrl = "oss域名" + sing.dir + dir;
            data = {
              code: response.status,
              msg: "上传成功",
              imageUrl,
            };
            resolve(data);
          } else {
            data = {
              code: response.status,
              msg: "上次失败,请重试",
            };
            reject(error);
          }
        })
        .catch((error) => {
          reject(error);
        });
    });
  },
};
</script>

注意:

  1. 上传需要设置oss跨域问题

    2.本人开发的时候遇到axios的坑个人编码风格

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值