iView Upload 上傳組件 手動上傳圖片

最近做一個后臺系統(tǒng)用的功能 總結(jié)下遇見的問題

功能需求點

  • 上傳選擇文件 判斷文件格式
  • 保存需要上傳的文件题山,展示文件名
  • 提供刪除文件功能(未上傳前)
  • 上傳文件

iView 提供的上傳組件

<Upload
    multiple
    ref="upload"
    :before-upload="handleUpload"
    :show-upload-list="false"
    :on-success="uploadSuccess"
    action="http://jsonplaceholder.typicode.com/posts/">
    <Button type="ghost" icon="ios-cloud-upload-outline">瀏覽</Button>
</Upload>
<div v-for="(item, index) in file">Upload file: {{ item.name }} 
    <a href="javascript:;"  @click="delectFile(item.name)">X</a>
    <Button style="margin-left:30px;"
        size="small"
        v-if="index === 0"
![](https://user-gold-cdn.xitu.io/2018/3/14/16223a8c12c38be9?w=649&h=743&f=png&s=55740)
        type="primary"
        @click="upload"
        :loading="loadingStatus">上傳</Button>
</div>

用到的API參數(shù) / 方法

  • multiple : 是否支持多選文件 默認 false
  • before-upload:上傳文件這前的事件鉤子,若返回 false 或者 Promise 則停止自動上傳
  • show-upload-list: 是否顯示已上傳文件列表 默認為true
  • on-success: 上傳文件成功后的事件鉤子,返回 res(接口方返回的信息), file(上傳文件), fileList(上傳文件List)
  • action: 文件上傳地址

上傳選擇文件 判斷文件格式 保存文件

選擇文件后會調(diào)用方法,在里面做的事情有 判斷文件類型是否滿足需求,如果滿足就保存到需要上傳的文件List里,這里我們需要自己定義一個keyID,應(yīng)為是手動上傳需要展示,刪除功能朝氓,如果沒有唯一ID不知道刪除那個

這里如果允許多文件上傳也不用但心什么,此鉤子會把選擇的文件當數(shù)組一樣調(diào)用上傳件事件前的鉤子事件 handleUpload 主届,所以也不用但心多文件選擇只會生成一個KeyID

handleUpload (file) { // 上傳文件前的事件鉤子
    // 選擇文件后 這里判斷文件類型 保存文件 自定義一個keyid 值 方便后面刪除操作
    let keyID = Math.random().toString().substr(2);
    file['keyID'] = keyID;
    // 保存文件到總展示文件數(shù)據(jù)里
    this.file.push(file);
    // 保存文件到需要上傳的文件數(shù)組里
    this.uploadFile.push(file)
    // 返回 falsa 停止自動上傳 我們需要手動上傳
    return false;
}

刪除功能

 delectFile (keyID) { // 刪除文件
    // 刪除總展示文件里的當前文件
    this.file = this.file.filter(item => {
        return item.name != name
    })
    // 刪除需要上傳文件數(shù)據(jù)里的當前文件
    this.uploadFile = this.uploadFile.filter(item => {
        return item.KeyID != keyID
    })
}

上傳文件

 upload () { // 上傳文件
    for (let i = 0; i < this.uploadFile.length; i++) {
        let item = this.file[i]
        this.$refs.upload.post(item);
    }
},

這里如果是多文件的時候需要循環(huán)上傳一個一個來赵哲,如果一次上傳多個組件會報錯,只支持一次上傳一個文件君丁,希望iView 以后會支持一次上傳多個吧枫夺,這個手動上傳開始一直沒找到,不知道手動如何上傳調(diào)用事件绘闷,找功能找半天橡庞,在官方文檔里也沒有寫较坛,官方到是有一個例子手動上傳的但:

image

并沒有事實上傳的操作 這里也只是模擬啦 上傳方法是在源碼里找到的

上傳成功后

應(yīng)為我們的上傳文件功能和提交整個頁面的數(shù)據(jù)是分開的, 所以提交數(shù)據(jù)的時候需要驗證選擇文件是否以上傳扒最。在上傳成功事件回調(diào)里讓后臺把我們傳過去的數(shù)據(jù)返出來做清空待上傳文件數(shù)組里的數(shù)據(jù)(注:主要是拿到文件的keyID 做刪除)丑勤,提交數(shù)據(jù)時候只需要判斷待上傳文件數(shù)組是否為空就可以了

文件上傳回調(diào)返回三個參數(shù)

  • res 上傳結(jié)果 成功與失敗 上傳之后的地址
  • file 此次上傳的文件
  • fileList 文件需要上傳的數(shù)組數(shù)據(jù)
uploadSuccess (res, file,fileList) { // 文件上傳回調(diào) 上傳成功后刪除待上傳文件
    console.log(response)
    console.log(file)
    console.log(fileList)  
},

這里有個小問題,應(yīng)為上傳的時候是循環(huán)調(diào)用上傳的吧趣,如果多個文件上傳這里會有多個回調(diào)結(jié)果不能成功一個文件提示用戶一次法竞,所以需要處理一下,這里自定義一個數(shù)每次回調(diào)回來作自增處理再菊,當值與上待上傳文件的length 相等時才提示上傳結(jié)果

詳細代碼地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市颜曾,隨后出現(xiàn)的幾起案子纠拔,更是在濱河造成了極大的恐慌,老刑警劉巖泛豪,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件稠诲,死亡現(xiàn)場離奇詭異,居然都是意外死亡诡曙,警方通過查閱死者的電腦和手機臀叙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來价卤,“玉大人劝萤,你說我怎么就攤上這事∩麒担” “怎么了床嫌?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胸私。 經(jīng)常有香客問我厌处,道長,這世上最難降的妖魔是什么岁疼? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任阔涉,我火速辦了婚禮,結(jié)果婚禮上捷绒,老公的妹妹穿的比我還像新娘瑰排。我一直安慰自己,他們只是感情好暖侨,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布凶伙。 她就那樣靜靜地躺著,像睡著了一般它碎。 火紅的嫁衣襯著肌膚如雪函荣。 梳的紋絲不亂的頭發(fā)上显押,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天,我揣著相機與錄音傻挂,去河邊找鬼乘碑。 笑死,一個胖子當著我的面吹牛金拒,可吹牛的內(nèi)容都是我干的兽肤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼绪抛,長吁一口氣:“原來是場噩夢啊……” “哼资铡!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幢码,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤笤休,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后症副,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體店雅,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年贞铣,在試婚紗的時候發(fā)現(xiàn)自己被綠了闹啦。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡辕坝,死狀恐怖窍奋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酱畅,我是刑警寧澤费变,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站圣贸,受9級特大地震影響挚歧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吁峻,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一滑负、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧用含,春花似錦矮慕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至缸夹,卻和暖如春痪寻,著一層夾襖步出監(jiān)牢的瞬間螺句,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工橡类, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蛇尚,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓顾画,卻偏偏與公主長得像取劫,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子研侣,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354