国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

前端臨床手札——文件上傳

SexySix / 2251人閱讀

摘要:文件上傳基本是學(xué)習(xí)前端路上必定遇到的例子,然而網(wǎng)上能找到的都是單單滿足上傳這步的案例。但前提是需要約定傳入值和返回類型。

文件上傳基本是學(xué)習(xí)前端路上必定遇到的例子,然而網(wǎng)上能找到的都是單單滿足上傳這步的案例。大多文章之所以只說上傳這步估計是簡單易入門,但是實(shí)際工作時就會發(fā)現(xiàn)上傳文件這個功能上是簡單的,邏輯上卻比較復(fù)雜。

先說一下需求和功能點(diǎn):

需求:上傳文件到服務(wù)器
功能:上傳

單這么看是簡單的,下面再補(bǔ)充一下:

需求2:
    需要對圖片裁剪壓縮
    文件必須控制在2MB內(nèi)
    上傳文件必須是圖片,包含的文件格式有:jpg、gif、png、jpeg、bmp
    上傳文件到服務(wù)器
    記錄上傳文件(包含文件名字、位置、后綴、大小等)
功能:
    判斷文件格式
    裁剪壓縮圖片
    上傳
    記錄數(shù)據(jù)

也不算復(fù)雜,可是這個從業(yè)務(wù)上來看只是單單的上傳功能而已,用戶可能還會提出更多要求,如:需要可視化信息(顯示上傳進(jìn)度、提示上傳成功或失敗)、選擇上傳位置(或云存儲,如:七牛)、需選擇上傳后的文件等其他需求,這就不細(xì)說了

還是說說我遭遇的較為復(fù)雜的需求:

需求3:
    上傳文件
    文件是圖片則上傳到[圖片]倉庫,是視頻則上傳到[視頻]倉庫,其他則上傳到[其他]倉庫
    需要對圖片裁剪壓縮
    文件大于2MB需啟用分片上傳
    上傳至七牛云儲存
    顯示上傳進(jìn)度、提示上傳結(jié)果
    記錄上傳文件(包含文件名字、位置、后綴、大小等)
功能:
    判斷文件格式
    請求相應(yīng)倉庫上傳token
    --圖片--
    獲得文件md5(作為文件名)
    裁剪壓縮圖片
    --視頻--
    判斷文件大小,大于2mb開啟分片上傳
    上傳
    記錄數(shù)據(jù)

這里面包含各種組件間數(shù)據(jù)傳輸、異步數(shù)據(jù)獲取等問題尤為惡心...所以我還是拿需求2這份繼續(xù)下面話題。

就目前需求能看出功能點(diǎn)是串行的,如下:

function upload(file){
    var verify = function(file){ return new Promise(...) },
        cut = function(file){ return new Promise(...) },
        upload = function(file){ return new Promise(...) },
        error = function(){...};
    return verify(file).then(cut).then(upload).catch(error);
}

//file change event
upload(e.currentTarget.files[0]).then(/*記錄數(shù)據(jù)*/).catch(...);

若上傳組件考慮可擴(kuò)展性得把邏輯處理分離出來,邏輯處理也能以組件方式引入其中并予以調(diào)用。但前提是需要約定傳入值和返回類型。

//上傳類
function UploadFile(file){
    this.file = file;
    this.name = file.name;
    this.size = file.size;
    this.toFormData = function(data){...};
}

var uploader = new Uploader(),
    verify = function(uploadFile){ return new Promise(...) },
    cut = function(uploadFile){ return new Promise(...) };
uploader.precondition.add([verify,cut]);

//file change event
var key = function(uploadFile){ return new Promise(...) },
uploader.precondition.add(key); //可添加新條件
uploader.upload(new UploadFile(e.currentTarget.files[0])).then(/*記錄數(shù)據(jù)*/).catch(...);

說這么多概念上的東西為的就是記錄下工作時的真實(shí)情況,需要考慮的不單是功能,還得理解用這個功能的人背后的故事。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/79214.html

相關(guān)文章

  • 前端臨床手札——webpack構(gòu)建逐步解構(gòu)(上)

    摘要:前言由于博主最近又閑下來了,之前覺得的官方文檔比較難啃一直放到現(xiàn)在。文章會逐步分析每個處理的用意當(dāng)然是博主自己的理解,不足之處歡迎指出溝通交流。后續(xù)將會補(bǔ)上構(gòu)建生產(chǎn)的配置分析,案例參考。前端臨床手札構(gòu)建逐步解構(gòu)下 前言 由于博主最近又閑下來了,之前覺得webpack的官方文檔比較難啃一直放到現(xiàn)在。細(xì)心閱讀多個webpack配置案例后覺得還是得自己寫個手腳架,當(dāng)然這個案例是基于vue的,...

    lowett 評論0 收藏0
  • 前端臨床手札——webpack構(gòu)建逐步解構(gòu)(下)

    摘要:續(xù)前端臨床手札構(gòu)建逐步解構(gòu)上工作流程案例最近添加了雪碧圖功能,并把替換成的,詳細(xì)可以看分支構(gòu)建生產(chǎn)上一篇說完了本地測試和是如何工作,接下來分析構(gòu)建生產(chǎn)模式下配置如何配置和每個模塊干了什么。 續(xù) 前端臨床手札——webpack構(gòu)建逐步解構(gòu)(上) 工作流程 showImg(https://segmentfault.com/img/bVCXjo?w=793&h=410); 案例:multip...

    TerryCai 評論0 收藏0
  • 前端臨床手札——單元測試

    摘要:感覺不能這樣下去就學(xué)寫一下單元測試,等他更新代碼我都跑一遍確認(rèn)一下,這樣工作安心多了。具體執(zhí)行的測試用例實(shí)現(xiàn)代碼。測試工具斷言庫測試驅(qū)動開發(fā)及測試框架入門學(xué)習(xí) 最近博主工作是和另一枚后端合作,但是經(jīng)常發(fā)現(xiàn)他寫的接口出錯,苦逼連連。感覺不能這樣下去就學(xué)寫一下單元測試,等他更新代碼我都跑一遍確認(rèn)一下,這樣工作安心多了。 經(jīng)過博主一番查找,貌似被推薦比較多的有mocha和chai,下面記錄簡...

    kid143 評論0 收藏0
  • 前端臨床手札——單元測試

    摘要:感覺不能這樣下去就學(xué)寫一下單元測試,等他更新代碼我都跑一遍確認(rèn)一下,這樣工作安心多了。具體執(zhí)行的測試用例實(shí)現(xiàn)代碼。測試工具斷言庫測試驅(qū)動開發(fā)及測試框架入門學(xué)習(xí) 最近博主工作是和另一枚后端合作,但是經(jīng)常發(fā)現(xiàn)他寫的接口出錯,苦逼連連。感覺不能這樣下去就學(xué)寫一下單元測試,等他更新代碼我都跑一遍確認(rèn)一下,這樣工作安心多了。 經(jīng)過博主一番查找,貌似被推薦比較多的有mocha和chai,下面記錄簡...

    godlong_X 評論0 收藏0
  • 前端臨床手札——在微信播放視頻的那些事

    摘要:然而我真的太天真,微信瀏覽器怎樣會讓你這樣好過問題集中于自動播放視頻這塊,需求很簡單自動播放全屏不顯示工具條自動播放一步步來,自動播放這個問題在十分肯定默認(rèn)是不支持的,必須基于用戶操作下才能加載視頻。至于在微信下和一個樣。 某天收到舊同事的信息說希望我?guī)褪肿鲆幌乱粋€簡單的H5,然后我看了看的確很簡單: 就是圖片滾動到最后自動播放視頻,播完顯示個按鈕交互。 然而我真的太天真,微信瀏覽器怎...

    _Zhao 評論0 收藏0

發(fā)表評論

0條評論

SexySix

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<