【技巧】Ionic3多文件上傳

關(guān)于ionic3多文件上傳,網(wǎng)上資料非常少,特別是基于form方式的掌栅,有也大多因?yàn)榇a過(guò)期而失效猾封,因?yàn)橛腥藛?wèn)到,所以寫(xiě)一下痢站。

因?yàn)閷?xiě)blog的網(wǎng)絡(luò)環(huán)境打不開(kāi)ionic的官網(wǎng)阵难,所以鏈接都是指向github

文件上傳多望,我們一般需要和本地文件打交道怀偷,先安裝file插件(全稱cordova-plugin-file),

執(zhí)行以下命令安裝file插件及其對(duì)應(yīng)的ionic-native模塊:

ionic cordova plugin add cordova-plugin-file

npm install @ionic-native/file --save

用時(shí)ts頭部先導(dǎo)入:

import { File } from '@ionic-native/file';

接著構(gòu)造函數(shù)注入File

constructor(private file:File){}

然后可以用兩種方式實(shí)現(xiàn):

fileTransfer插件? ? ? vs? ? ? form上傳

1椎工、fileTransfer

先執(zhí)行以下命令安裝fileTransfer插件(全稱cordova-plugin-file-transfer)及其對(duì)應(yīng)的ionic-native模塊:

ionic cordova plugin add cordova-plugin-file-transfer

npm install @ionic-native/transfer --save

其中维蒙,fileTransfer提供三個(gè)方法:

upload: Sends a file to a server.

download: Downloads a file from server.

abort: Aborts an in-progress transfer.

直接按文檔說(shuō)明調(diào)用即可,它的特點(diǎn)是只支持一個(gè)文件的操作斑响,所以相應(yīng)后臺(tái)服務(wù)只接收一個(gè)文件的處理舰罚,上傳多個(gè)文件就多次調(diào)用营罢,而每個(gè)方法是一個(gè)promise的異步操作,常規(guī)情況缕溉,把多個(gè)promise最后做一個(gè)同步即可倒淫。

單文件上傳
多文件上傳同步

2运翼、form上傳

上述上傳文件方法兴枯,需要發(fā)送多次網(wǎng)絡(luò)請(qǐng)求财剖,有些人不喜歡這樣躺坟,想一次性上傳所有文件咪橙,那可以構(gòu)建一個(gè)多個(gè)文件的表單數(shù)據(jù)提交美侦。

首先菠剩,先寫(xiě)一個(gè)方法讀取文件為form表單可識(shí)別的blob格式:

讀取文件為blob格式

然后調(diào)用該方法構(gòu)建form表單數(shù)據(jù)并上傳提交:

構(gòu)建表單數(shù)據(jù)并一次上傳

其中這里要注意的是准颓,后臺(tái)接口服務(wù)要接收多個(gè)文件處理瞬场。commonProvider為封裝的http請(qǐng)求方法,請(qǐng)求頭為{'Content-Type':'multipart/form-data'},另外代碼完全可以不使用cacheData變量看幼,直接在filePaths.foreach里面就構(gòu)建formData诵姜,這樣就省下一些代碼,而我是因?yàn)槠渌虮A暨@種寫(xiě)法心例。

當(dāng)然也可以像fileTransfer一樣止后,發(fā)送多次請(qǐng)求上傳:

構(gòu)建表單數(shù)據(jù)并多次上傳

最后我建議把上述方法封裝到一個(gè)provider里面译株,這樣即方便維護(hù)和調(diào)用歉糜,也利于其它項(xiàng)目使用现恼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叉袍,一起剝皮案震驚了整個(gè)濱河市喳逛,隨后出現(xiàn)的幾起案子润文,更是在濱河造成了極大的恐慌典蝌,老刑警劉巖骏掀,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件截驮,死亡現(xiàn)場(chǎng)離奇詭異葵袭,居然都是意外死亡乖菱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)窟坐,“玉大人哲鸳,你說(shuō)我怎么就攤上這事盔憨∮粞遥” “怎么了问慎?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵冰木,是天一觀的道長(zhǎng)笼恰。 經(jīng)常有香客問(wèn)我社证,道長(zhǎng)追葡,這世上最難降的妖魔是什么辽俗? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任崖飘,我火速辦了婚禮吊圾,結(jié)果婚禮上项乒,老公的妹妹穿的比我還像新娘梁沧。我一直安慰自己频鉴,他們只是感情好垛孔,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布周荐。 她就那樣靜靜地躺著概作,像睡著了一般讯榕。 火紅的嫁衣襯著肌膚如雪瘩扼。 梳的紋絲不亂的頭發(fā)上垃僚,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天栽燕,我揣著相機(jī)與錄音碍岔,去河邊找鬼朵夏。 笑死仰猖,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鸵赫。 我是一名探鬼主播辩棒,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钻弄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起砚偶,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤染坯,失蹤者是張志新(化名)和其女友劉穎单鹿,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體仲锄,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年侨颈,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了哈垢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扛拨。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖啤贩,靈堂內(nèi)的尸體忽然破棺而出拜秧,到底是詐尸還是另有隱情枉氮,我是刑警寧澤聊替,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布惹悄,位于F島的核電站,受9級(jí)特大地震影響泣港,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜踩窖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一箫柳、第九天 我趴在偏房一處隱蔽的房頂上張望啥供。 院中可真熱鬧滤灯,春花似錦鳞骤、人聲如沸豫尽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)陶舞。三九已至肿孵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間停做,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工烙丛, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留懈凹,地道東北人介评。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓寒瓦,卻偏偏與公主長(zhǎng)得像坪仇,于是被迫代替她去往敵國(guó)和親椅文。 傳聞我的和親對(duì)象是個(gè)殘疾皇子皆刺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

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

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理漓帅,服務(wù)發(fā)現(xiàn),斷路器器予,智...
    卡卡羅2017閱讀 134,657評(píng)論 18 139
  • 前言:用cordova開(kāi)發(fā)hybrid app的過(guò)程中,由于是html5開(kāi)發(fā)的app弓乙,在手機(jī)上很多權(quán)限受限制...
    京東內(nèi)部?jī)?yōu)惠券閱讀 5,373評(píng)論 5 65
  • 這次要講的功能主要依賴于兩個(gè)插件:File Transfer 和 File Opener 插件介紹 主要功能 F...
    Snorlax丶閱讀 14,190評(píng)論 16 22
  • 本文前提認(rèn)為讀者有基本的angular2基礎(chǔ)浓瞪,知道怎么import乾颁,知道provider怎么用 有人問(wèn)到視頻上傳這...
    IT晴天閱讀 3,608評(píng)論 14 7
  • The CALayer class manages image-based content and allows ...
    zbj_閱讀 656評(píng)論 0 48