vue整合華為云obs上傳圖片

關(guān)于華為云,網(wǎng)上要找的資料很少很少.另外要吐槽一下華為云的文檔,前篇找不到一點關(guān)于vue的技術(shù)文檔.后來還打了官網(wǎng)技術(shù)的電話咨詢.人家來了一句居然不支持vue的使用/頓時一臉懵逼,那怎么辦,項目又必須用華為云的obs上傳.
? ? 好吧.算了自己來研究研究吧.居然支持BrowserJS的使用那么肯定可以在vue中使用起來.demo代碼擼起來
首先要下載sdk包.其實就是一個js文件引入
下載SDK?BrowserJS? ?

1 官網(wǎng)下載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: "上傳失敗糯景,請重新上傳"

? ? ? })

? ? });

? // });

}

在項目中只需要調(diào)用一下就OK了.so easy
obsUpload(item,this.preview)
//?item就是你上傳的flie文件
//this.preview就是一個你保存的數(shù)組 可以預(yù)覽回顯用
<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;

? ? ? ? ? ? }

? ? ? ? ? ? // 加載預(yù)覽圖

? ? ? ? ? ? this.preview.length = 0;

? ? ? ? ? ? this.images.forEach(item=>{

? ? ? ? ? ? ? ? obsUpload(item,this.preview)

? ? ? ? ? ? ? ? this.imageSync();//觸發(fā)到父組件操作邏輯

? ? ? ? ? ? })

? ? ? ? },

好了.這個坑踩了一下下午才搞出來.希望可以幫到那些項目必須用到華為云obs上傳到同學、惫撰、、始鱼、
最后提示:能不能就不用.真的挺麻煩的,七牛/阿里文檔又簡單,一看就會.那些文檔簡單一擼就會的第三方上傳不香嗎???慎用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末惹悄,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子亭螟,更是在濱河造成了極大的恐慌,老刑警劉巖骑歹,帶你破解...
    沈念sama閱讀 212,599評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件预烙,死亡現(xiàn)場離奇詭異,居然都是意外死亡道媚,警方通過查閱死者的電腦和手機扁掸,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來衰琐,“玉大人也糊,你說我怎么就攤上這事∠壑妫” “怎么了狸剃?”我有些...
    開封第一講書人閱讀 158,084評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長狗热。 經(jīng)常有香客問我钞馁,道長,這世上最難降的妖魔是什么匿刮? 我笑而不...
    開封第一講書人閱讀 56,708評論 1 284
  • 正文 為了忘掉前任僧凰,我火速辦了婚禮,結(jié)果婚禮上熟丸,老公的妹妹穿的比我還像新娘训措。我一直安慰自己,他們只是感情好光羞,可當我...
    茶點故事閱讀 65,813評論 6 386
  • 文/花漫 我一把揭開白布绩鸣。 她就那樣靜靜地躺著,像睡著了一般纱兑。 火紅的嫁衣襯著肌膚如雪呀闻。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,021評論 1 291
  • 那天潜慎,我揣著相機與錄音捡多,去河邊找鬼。 笑死铐炫,一個胖子當著我的面吹牛垒手,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播倒信,決...
    沈念sama閱讀 39,120評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼淫奔,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了堤结?” 一聲冷哼從身側(cè)響起唆迁,我...
    開封第一講書人閱讀 37,866評論 0 268
  • 序言:老撾萬榮一對情侶失蹤鸭丛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后唐责,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鳞溉,經(jīng)...
    沈念sama閱讀 44,308評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,633評論 2 327
  • 正文 我和宋清朗相戀三年鼠哥,在試婚紗的時候發(fā)現(xiàn)自己被綠了熟菲。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,768評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡朴恳,死狀恐怖抄罕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情于颖,我是刑警寧澤呆贿,帶...
    沈念sama閱讀 34,461評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站森渐,受9級特大地震影響做入,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜同衣,卻給世界環(huán)境...
    茶點故事閱讀 40,094評論 3 317
  • 文/蒙蒙 一竟块、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧耐齐,春花似錦浪秘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,850評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至询枚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浙巫,已是汗流浹背金蜀。 一陣腳步聲響...
    開封第一講書人閱讀 32,082評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留的畴,地道東北人渊抄。 一個月前我還...
    沈念sama閱讀 46,571評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像丧裁,于是被迫代替她去往敵國和親护桦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,666評論 2 350

推薦閱讀更多精彩內(nèi)容