vue+elementUi+oss上传

一、 需求:oss子账号上传图片

二、前提:
《1》配置Bucket (很重要,不设置的话会出现跨域问题)

  • 将allowed origins(来源)设置成 *
  • 将allowed methods(允许methods)设置成 PUT, GET, POST, DELETE, HEAD
  • 将allowed headers(允许headers)设置成 *
  • 将expose headers(暴露headers)设置成 ETag (这里需要换行) x-oss-request-id

1、后端返回oss的配置信息

  • region : 以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
  • accessKeyId:必须参数,后端会给的
  • accessKeySecret:必须参数,后端会给的
  • stsToken ://这个官网上写的js也可以获取但是我没有实现,如果有会的求大佬赐教
  • bucket:// 填写Bucket名称。

2、封装(utils/ossUpload.js)

  • 下载
yarn add oss
  • 封装方法
const OSS = require("ali-oss");
import {getConfig} from '@/api/getOssConfig.js' //这就是后端给你的接口,自己封装后调用下
//获取配置条件
const  client=(data)=> {
  return new OSS({
    region: data.region,
    accessKeyId: data.accessKeyId,
    accessKeySecret: data.accessKeySecret,
    stsToken: data.stsToken,
    bucket: data.bucket,
  });
}
//获取uuid随机数作为文件名称
const  getFileNameUUID = () => {
  function rx() {
    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
  }
  return `${+new Date()}_${rx()}${rx()}`;
};
//创建oss上传方法
async function ossUpload(file) {
  //调用接口,获取配置
  let configInfo = await getConfig({});
  let fileType = file.type.split("/")[1];
  //拼接文件名称(拼接你需要保存的目录路径,'moduleGroup/'这是我的目录路径)
  let fileNameUrl = "moduleGroup/" + (await getFileNameUUID()) + "." + fileType;
  let res = await client(configInfo.data).put(fileNameUrl, file);
  return res.url;
}
  • 调用方法
<template>
	<div>
		<el-upload
		  action=""
		  :http-request="handleUploadFile"
		  />
	   </div>
</template>
<script>
import ossUpload from "@/utils/ossUpload.js";
export default {
	data(){
		return {
		}
	},
	method:{
	    handleUploadFile(file) {
	      if (!file.file) {
	        return this.$message.error("请选择文件");
	      }
	      //这样就可以获取到上传后的url
	        let imgUrl = await ossUpload(file.file);
	        console.log('这是图片url',imgUrl)
	    },
	
	}
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值