vue整合华为云obs上传图片

关于华为云,网上要找的资料很少很少.另外要吐槽一下华为云的文档,前篇找不到一点关于vue的技术文档.后来还打了官网技术的电话咨询.人家来了一句居然不支持vue的使用/顿时一脸懵逼,那怎么办,项目又必须用华为云的obs上传.
    好吧.算了自己来研究研究吧.居然支持BrowserJS的使用那么肯定可以在vue中使用起来.demo代码撸起来
首先要下载sdk包.其实就是一个js文件引入
下载SDK BrowserJS   

1 官网下载BrowserJS 
2 esdk-obs-browserjs  3.20.7 
3 重要的一点BrowserJS 一个是含without-polyfil 另外一个是不含without-polyfil
4 在项目中如果你有单独引入babel-polyfill的话,那你就用含without-polyfil的js文件、如果你没有就引入不含without-polyfil的js文件,这一点很重要,要不然你项目会冲突

下面是我写的一个demo,比较简单.搭建凑合着看吧
这个是一个请求封装的uploadImg.js

import Vue from 'vue';

import { ToastPlugin } from 'vux'

Vue.use(ToastPlugin)

let vm = new Vue()

import { getObsConfigApi} from '@/api/common/getObsConfig.js'

require("./esdk-obs-browserjs-without-polyfill-3.19.5.min.js");//因为我的项目里有装过babel-polyfill所以选择用来这个带without-polyfill***.js

function generateUUID() {

  var d = new Date().getTime();

  if (window.performance && typeof window.performance.now === "function") {

    d += performance.now(); //use high-precision timer if available

  }

  var uuid = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(

    /[xy]/g,

    function (c) {

      var r = (d + Math.random() * 16) % 16 | 0;

      d = Math.floor(d / 16);

      return (c == "x" ? r : (r & 0x3) | 0x8).toString(16);

    }

  );

  return uuid;

}

function getObsClient(accessKey, secretKey, endPoint) {

  // eslint-disable-next-line no-undef

  var obsClient = new ObsClient({

    access_key_id: accessKey,

    secret_access_key: secretKey,

    server: endPoint,

    timeout: 60 * 5,

  });

  return obsClient;

}

export async function obsUpload(file,preview) {

  // return new Promise(async resolve => {

  // console.log('接收===')

  // console.log(file)

  let fileObj = file;

  // let fileContent = file.url;

  const {data} = await getObsConfigApi();

  const { accessKey,bucketName,endPoint, secretKey } = data;

  const objectKey = generateUUID(); // 文件的uuid

  getObsClient(accessKey, secretKey, endPoint)

    .putObject({

      Bucket: bucketName,

      Key: objectKey,

      Metadata: {

        property: "property-value"

      },

      SourceFile: fileObj,

    })

    .then(function (result) {

      // console.log(result);

      console.log(`https://${bucketName}.${endPoint}/${objectKey}`);// 这个就是最终生成的访问路径

      vm.$vux.toast.show({

          type: 'text',

          position: 'middle',

          text: "上传成功"

      })

      preview.unshift({src:`https://${bucketName}.${endPoint}/${objectKey}`})


    })

    .catch(function (err) {

      console.error(err);

      vm.$vux.toast.show({

        type: 'text',

        position: 'middle',

        text: "上传失败,请重新上传"

      })

    });

  // });

}

在项目中只需要调用一下就OK了.so easy
obsUpload(item,this.preview)
// item就是你上传的flie文件
//this.preview就是一个你保存的数组 可以预览回显用
<input id="fileUpload" name="file" type="file" :multiple="multiple" @change="imageLoad">
imageLoad (e) {

            let images = {};

            // 过滤非图片

            for (let v of e.target.files) {

                if (v.type.search('image') !== -1) {

                    images[v.name] = v;

                }

            }

            // 加载已有图片

            for (let v of this.images) {

                images[v.name] = v;

            }

            // 过滤重复文件

            this.images = [...new Set(Object.keys(images))].reduce((a, b) => {

                a.push(images[b]);

                return a;

            }, []);

            // limit

            if (this.images.length > this.limit) {

                this.images.length = this.limit;

            }

            // 加载预览图

            this.preview.length = 0;

            this.images.forEach(item=>{

                obsUpload(item,this.preview)

                this.imageSync();//触发到父组件操作逻辑

            })

        },

好了.这个坑踩了一下下午才搞出来.希望可以帮到那些项目必须用到华为云obs上传到同学、、、、
最后提示:能不能就不用.真的挺麻烦的,七牛/阿里文档又简单,一看就会.那些文档简单一撸就会的第三方上传不香吗???慎用

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容