vue、ali oss、elementUI实现上传图片到阿里OSS服务器

前几天写了一个上传图片到阿里oss的小demo,今天来做下笔记,以及记录一下写的过程中碰到的小问题~

1. 配置oss服务器,登录阿里控制台,在对象存储里面创建Bucket,记得要设置跨域的规则(因为我一开始没有设置,后来上传跨域了(⊙︿⊙))。跨域设置需要点击创建好的bucket进入详情页,然后在左侧权限管理-->跨域设置中配置。

image

具体设置参数可以参考下图:

image

2. 准备一个空项目,安装一下ali-oss的依赖以及引入elment UI。

npm install ali-oss --save

3. 然后就是写代码啦,具体代码如下:


// html部分

<el-upload

        class=""

        action=""

        :on-success="handleSuccess"

        :http-request="uploadFile"

        multiple

        :limit="3"

        :file-list="fileList">

      <el-button size="small" type="primary">点击上传</el-button>

    </el-upload>

    <img :src="imgUrl"/>

// js部分

<script>

const OSS = require('ali-oss');

const client= new OSS({

  accessKeyId: '*****',  // 查看你自己的阿里云KEY

  accessKeySecret: '****', // 查看自己的阿里云KEYSECRET

  bucket: 'hs-image-oss', // 你的 OSS bucket 名称

  region: 'oss-cn-beijing', // bucket 所在地址,我的是 华北2 北京

  // cname: true // 开启自定义域名上传

  // endpoint:"file.xxxx.live" // 自己的域名

});

export default {

  props: {

    msg: String

  },

  data () {

    return {

      fileList: [],

      imgUrl: ''

    }

  },

  methods: {

    async uploadFile (options) {

      try {

        let file = options.file; // 拿到 file

        let fileName = file.name.substr(0,file.name.lastIndexOf('.'))

        let date = new Date().getTime()

        let fileNames = `${date}_${fileName}` // 拼接文件名,保证唯一,这里使用时间戳+原文件名

        // 上传文件,这里是上传到OSS的 uploads文件夹下

        client.put('banner/' + fileNames, file).then(res=>{

          if (res.res.statusCode === 200) {

            options.onSuccess(res)

          }else {

            options.onError("上传失败")

          }

        })

      }catch (e) {

        options.onError("上传失败")

      }

    },

    // 上传成功回调函数

    handleSuccess (res) {

      console.log(res.url)

      this.imgUrl = res.url

    }

  }

}

</script>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容