Angular2使用ng2-file-upload上傳文件

Angular2中有兩個比較好用的上傳文件的第三方庫熬的,一個是ng2-file-upload匙握,一個是ng2-uploader妨托。ng2-uploader是一個輕便的上傳文件的支持庫,功能較弱盟萨,而ng2-file-upload是一個功能比較全面的上傳文件的支持庫凉翻。這里主要介紹一下ng2-file-upload的使用。

以下以Mac OS操作系統(tǒng)介紹鸯旁。

作者:Shmily落墨

鏈接:http://www.reibang.com/p/0741186f60ab

? ? ? ? ? ?https://segmentfault.com/a/1190000007886391

????????????http://www.php.cn/js-tutorial-399182.html

來源:簡書

著作權(quán)歸作者所有噪矛。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處铺罢。


1. 安裝

使用npm安裝即可艇挨。在項目中打開“終端”,運行命令:

sudo npm install ng2-file-upload --save

如果是以systemjs的方式打包韭赘,安裝完成后需要打開systemjs.config.js文件缩滨,在System.config的map字段中的最后一行輸入以下字段:

'ng2-file-upload':'npm:ng2-file-upload'

在System.config的packages字段中的最后一行輸入:

'ng2-file-upload': {? ? ? ? main:'index.js',? ? ? ? defaultExtension:'js'}

之后便可以在項目中使用了。

2. 使用

在需要用到的模塊中引用模塊:

import{ CommonModule }from'@angular/common';import{ FileUploadModule }from'ng2-file-upload';

然后在@NgModule的imports字段中引用CommonModule和FileUploadModule泉瞻。

在對應(yīng)需要使用的組件內(nèi)引用:

import{ FileUploader }from'ng2-file-upload';

初始化FileUploader:

uploader:FileUploader =newFileUploader({? ? ? ? url:"http://www.download.com:80/uploadFile",? ? ? method:"POST",? ? ? ? itemAlias:"uploadedfile"});

初始化FileUploader需要傳入FileUploaderOptions類型的參數(shù):

| 參數(shù)名 | 參數(shù)類型 | 是否是可選值 | 參數(shù)說明 |

|:---- --:|:--------:|:-------------:|:--------:|

| allowedMimeType | Array | 可選值 |? |

| allowedFileType | Array | 可選值 | 允許上傳的文件類型 |

| autoUpload | boolean | 可選值 | 是否自動上傳 |

| isHTML5 | boolean | 可選值 | 是否是HTML5 |

| filters | Array | 可選值 |? |

| headers | Array | 可選值 | 上傳文件的請求頭參數(shù) |

| method | string | 可選值 | 上傳文件的方式 |

| authToken | string | 可選值 | auth驗證的token |

| maxFileSize | number | 可選值 | 最大可上傳文件的大小 |

| queueLimit | number | 可選值 |? |

| removeAfterUpload | boolean | 可選值 | 是否在上傳完成后從隊列中移除 |

| url | string | 可選值 | 上傳地址 |

| disableMultipart | boolean | 可選值 |? |

| itemAlias | string | 可選值 | 文件標記/別名 |

| authTokenHeader | string | 可選值 | auth驗證token的請求頭 |

2.1 選擇文件

在組件對應(yīng)的HTML模版中設(shè)置input標簽:

在組件.ts文件中設(shè)置聲明函數(shù):

selectedFileOnChanged() {// 這里是文件選擇完成后的操作處理}

選擇文件默認支持選擇單個文件脉漏,如需支持文件多選,請在標簽中添加multiple屬性袖牙,即:

2.2 拖拽文件

拖拽文件默認支持多文件拖拽侧巨。

對塊級元素進行設(shè)置(這里以div標簽為例):

在組件.ts文件中設(shè)置聲明函數(shù):

fileOverBase(event) {// 拖拽狀態(tài)改變的回調(diào)函數(shù)}fileDropOver(event) {// 文件拖拽完成的回調(diào)函數(shù)}

2.3 文件上傳

FileUploader有個數(shù)組類型的屬性queue,里面是所有拖拽的和選擇的文件鞭达,只要操作這個屬性便可以進行文件上傳司忱。

this.uploader.queue[0].onSuccess =(response, status, headers) =>{// 上傳文件成功? if(status ==200) {// 上傳文件后獲取服務(wù)器返回的數(shù)據(jù)lettempRes =JSON.parse(response);? ? ? ? ? ? }else{// 上傳文件后獲取服務(wù)器返回的數(shù)據(jù)錯誤? ? ? ? }};this.uploader.queue[0].upload();// 開始上傳

3. FileUploader詳解

FileUploader是ng2-file-upload最主要的部件,里面包含了所有對文件的處理畴蹭。

3.1 屬性詳解

isUploading:[boolean]是否正在上傳文件中坦仍。

queue:[array]已經(jīng)拖拽或選擇的所有文件。

progress:[number]所有的上傳文件的整體進度叨襟。

options:[FileUploaderOptions]上傳文件的配置信息繁扎,前面已經(jīng)介紹過。

3.2 方法詳解

setOptions(options: FileUploaderOptions): void;

設(shè)置上傳文件的配置信息糊闽。

addToQueue(files: File[], options?: FileUploaderOptions, filters?: FilterFunction[] | string): void;

手動添加文件到FileUploader的上傳隊列中梳玫。

removeFromQueue(value: FileItem): void;

從FileUploader的上傳隊列中移除指定文件爹梁。

clearQueue(): void;

清除FileUploader上傳隊列中的所有文件。

uploadItem(value: FileItem): void;

上傳指定文件提澎。

cancelItem(value: FileItem): void;

取消指定文件的上傳卫键。

uploadAll(): void;

上傳FileUploader的上傳隊列中的所有文件。

cancelAll(): void;

取消FileUploader的上傳隊列中的所有文件的上傳虱朵。

isFile(value: any): boolean;

判斷是否是文件。

getIndexOfItem(value: any): number;

獲取文件在FileUploader上傳隊列中的位置钓账。

getNotUploadedItems(): Array;

獲取FileUploader上傳隊列中的所有未上傳的文件碴犬。

getReadyItems(): Array;

獲取FileUploader上傳隊列中的所有準備上傳的文件。

destroy(): void;

銷毀FileUploader實例梆暮。

3.3 監(jiān)聽詳解

onAfterAddingAll(fileItems: any): any;

添加完所有文件之后的回調(diào)

返回:

fileItems - 添加的文件的數(shù)組

onBuildItemForm(fileItem: FileItem, form: any): any;

創(chuàng)建文件之后的回調(diào)

返回:

fileItem - 創(chuàng)建的文件

form - 添加的方式

onAfterAddingFile(fileItem: FileItem): any;

添加一個文件之后的回調(diào)

返回:

fileItem - 添加的文件

onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): any;

添加文件失敗的回調(diào)

返回:

item -

filter -

options -

onBeforeUploadItem(fileItem: FileItem): any;

要上傳文件之前的回調(diào)

返回:

fileItem - 將要上傳的文件

onProgressItem(fileItem: FileItem, progress: any): any;

上傳文件的進度(開始上傳后調(diào)用非常頻繁)

返回:

fileItem - 正在上傳的文件

progress - 該文件的上傳進度

onProgressAll(progress: any): any;

整體的上傳進度的回調(diào)(開始上傳后調(diào)用非常頻繁)

返回:

progress - 整體的上傳文件的進度

onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;

上傳一個文件成功的回調(diào)

返回:

item - 上傳成功的文件

response - 上傳成功后服務(wù)器的返回

status - 狀態(tài)碼

headers - 上傳成功后服務(wù)器的返回的返回頭

onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;

上傳一個文件錯誤的回調(diào)

返回:

item - 上傳錯誤的文件

response - 返回的錯誤

status - 狀態(tài)碼

headers - 返回的錯誤返回頭

onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;

取消上傳一個文件的回調(diào)

返回:

item - 取消上傳的文件

response - 取消的返回信息

status - 狀態(tài)碼

headers - 取消的返回信息的返回頭

onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;

完成上傳一個文件的回調(diào)

返回:

item - 上傳成功的文件

response - 上傳成功后服務(wù)器的返回

status - 狀態(tài)碼

headers - 上傳成功后服務(wù)器的返回的返回頭

onCompleteAll(): any;

完成上傳所有文件的回調(diào)

4. FileItem詳解

FileItem是FileUploader中queue屬性的元素類型服协,在FileUploader中存儲的文件的基本類型。

4.1 屬性詳解

alias[string]: 上傳的標志/別名啦粹。

url[string]: 地址偿荷。

method[string]: 上傳的方法。

headers[any]: 上傳的頭部參數(shù)唠椭。

withCredentials:[boolean]: 是否使用證書跳纳。

formData[any]: 格式化數(shù)據(jù)?

isReady[boolean]: 是否準備上傳(是否可以上傳)贪嫂。

isUploading[boolean]: 是否正在上傳寺庄。

isUploaded[boolean]: 是否已經(jīng)上傳過。

isSuccess[boolean]: 是否上傳成功力崇。

isCancel[boolean]: 是否取消上傳斗塘。

isError[boolean]: 是否上傳錯誤。

progress[number]: 上傳進度亮靴。

index[number]: 在隊列中的位置馍盟。

4.2 方法詳解

upload(): void;

開始上傳這個文件。

cancel(): void;

取消上傳這個文件茧吊。

remove(): void;

將這個文件從上傳隊列中移除贞岭。

4.3 監(jiān)聽詳解

onBeforeUpload(): void;

開始上傳之前的回調(diào)函數(shù)。

onBuildForm(form: any): any;

創(chuàng)建文件的回調(diào)函數(shù)饱狂。

返回:

form - 文件來源曹步。

onProgress(progress: number): any;

上傳文件的進度回調(diào)函數(shù)。

返回:

progress - 上傳文件的進度休讳。

onSuccess(response: string, status: number, headers: ParsedResponseHeaders): any;

上傳文件成功的回調(diào)函數(shù)讲婚。

返回:

response - 成功后的回調(diào)數(shù)據(jù)

status - 狀態(tài)碼

headers - 回調(diào)數(shù)據(jù)的返回頭

onError(response: string, status: number, headers: ParsedResponseHeaders): any;

上傳文件錯誤的回調(diào)函數(shù)。

onCancel(response: string, status: number, headers: ParsedResponseHeaders): any;

取消上傳的回調(diào)函數(shù)俊柔。

onComplete(response: string, status: number, headers: ParsedResponseHeaders): any;

上傳文件完成的回調(diào)函數(shù)筹麸。

作者:Shmily落墨

鏈接:http://www.reibang.com/p/0741186f60ab

來源:簡書

著作權(quán)歸作者所有活合。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處物赶。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末白指,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子酵紫,更是在濱河造成了極大的恐慌告嘲,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奖地,死亡現(xiàn)場離奇詭異橄唬,居然都是意外死亡,警方通過查閱死者的電腦和手機参歹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門仰楚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人犬庇,你說我怎么就攤上這事僧界。” “怎么了臭挽?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵捂襟,是天一觀的道長。 經(jīng)常有香客問我埋哟,道長笆豁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任赤赊,我火速辦了婚禮闯狱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抛计。我一直安慰自己哄孤,他們只是感情好,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布吹截。 她就那樣靜靜地躺著瘦陈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪波俄。 梳的紋絲不亂的頭發(fā)上晨逝,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天,我揣著相機與錄音懦铺,去河邊找鬼捉貌。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的趁窃。 我是一名探鬼主播牧挣,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼醒陆!你這毒婦竟也來了瀑构?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤刨摩,失蹤者是張志新(化名)和其女友劉穎寺晌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澡刹,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡折剃,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了像屋。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡边篮,死狀恐怖己莺,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情戈轿,我是刑警寧澤凌受,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站思杯,受9級特大地震影響胜蛉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜色乾,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一誊册、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧暖璧,春花似錦案怯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至局蚀,卻和暖如春麦锯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背琅绅。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工扶欣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓宵蛀,卻偏偏與公主長得像昆著,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子术陶,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355