vue+element上传图片到阿里云(可直接运行domo)

vue+element上传图片到阿里云,OSS(最简单,最详细,可在线运行domo),不要走弯路了

支持格式 jpeg,jpg,png,webp,gif

=可限制大小== 4M

安装ali-oss
npm install ali-oss
在src目录下创建alioss.js
var OSS = require('ali-oss');
export function client() {
  var client = new OSS({
    region: '',//填写Bucket所在地域
    accessKeyId: '',  //这自己keyId
    accessKeySecret: '', //这里写自己的key密码 
    bucket: '' ,// 填写Bucket名称。
	secure:true,
  })  //后端提供数据 
  return client
}
/**
 * 生成随机文件名称
 * 规则八位随机字符,加下划线连接时间戳
 */
export const getFileNameUUID = () => {
  function rx() {
    return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1)
  }
  return `${+new Date()}_${rx()}${rx()}`
}

基于vue所以我是用的是element ui,不知道怎么引用的可以查看element ui官网链接: element ui.


<template>
    <el-upload class="avatar-uploader" action="" v-model="Addfrom.url" :http-request="uploadURL"
    :multiple = true :before-upload="handleBeforeUpload" :limit="8">
      <img v-if="Addfrom.url" :src="Addfrom.url" class="avatar">
      <i v-else class="el-icon-plus avatar-uploader-icon"></i>
    </el-upload>             
</template>
<script>
  import {client,	getFileNameUUID} from '@/utils/alioss'
  export default {
    data() {
      return {
        fileList: [],
        Addfrom:{
          url:''
        }
      };
    },
    methods: {
      // 上传文件之前
			handleBeforeUpload(file) {
				const isJPEG = file.name.split('.')[1] === 'jpeg';
				const isJPG = file.name.split('.')[1] === 'jpg';
				const isPNG = file.name.split('.')[1] === 'png';
				const isWEBP = file.name.split('.')[1] === 'webp';
				const isGIF = file.name.split('.')[1] === 'gif';
				const isLt500K = file.size / 1024 / 1024 / 1024 / 1024 < 4;
				if (!isJPG && !isJPEG && !isPNG && !isWEBP && !isGIF) {
					this.$message.error('上传图片只能是 JPEG/JPG/PNG 格式!');
				}
				if (!isLt500K) {
					this.$message.error('单张图片大小不能超过 4mb!');
				}
				return (isJPEG || isJPG || isPNG || isWEBP || isGIF) && isLt500K;
			},
			uploadURL(file) {
				//注意哦,这里指定文件夹'image/',尝试过写在配置文件,但是各种不行,写在这里就可以
				var fileName = 'image/'+'banner' + `${Date.parse(new Date())}` + '.jpg'; 
				//定义唯一的文件名,打印出来的uid其实就是时间戳
				client().multipartUpload(fileName, file.file,{
                progress: function(percentage, cpt) {
                  console.log('打印进度',percentage)
                }
              }).then((res)=>{
          //此处赋值,是相当于上传成功之后,手动拼接服务器地址和文件名
          //简单描述就是bucket概括,里面的域名地址,粘贴过来可以直接用
          this.Addfrom.url = 'https://xxx.xxx.aliyuncs.com/' + fileName;
          console.log(this.Addfrom.url,"this.Addfrom.url")
        })
			},

    }
  }
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值