最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Angularjs上傳文件組件flowjs功能

 更新時(shí)間:2017年08月07日 17:27:16   作者:chenqk_123  
現(xiàn)在的項(xiàng)目,無(wú)論代銷(xiāo),幾乎不會(huì)缺省的一個(gè)功能就是上傳下載功能,今天談一談使用AngularJS+bootsrtap下的上傳下載功能,需要的朋友參考下吧

現(xiàn)在的項(xiàng)目,無(wú)論代銷(xiāo),幾乎不會(huì)缺省的一個(gè)功能就是上傳下載功能,今天談一談使用AngularJS+bootsrtap下的上傳下載功能。

1.angularjs和flowjs

angularjs我在其他的博客里面也講到了它的其他的一些用處,只是沒(méi)有做過(guò)系統(tǒng)的說(shuō)明,在這里也不打算一一介紹。這個(gè)在一些官網(wǎng)上都有說(shuō)明,我也會(huì)花一點(diǎn)時(shí)間去整理一下angularjs的知識(shí)點(diǎn)以及在使用到angularjs需要注意的或者我在項(xiàng)目中碰到的一些問(wèn)題,會(huì)在其他博客中跟大家分享。這里我只簡(jiǎn)單的一筆帶過(guò),主要是flowjs這個(gè)組件的使用。順便一提,還得夸夸angularjs的強(qiáng)大。

1.1 flowjs

https://github.com/flowjs/flow.js,這個(gè)網(wǎng)站上是我見(jiàn)到過(guò)對(duì)flowjs這部分描述最清楚的API了,上面列舉了flowjs作為angular下的上傳組件的使用以及屬性的詳細(xì)講解。我主要列舉flowjs常用的一些屬性以及使用時(shí)需要注意的問(wèn)題

1.2flowjs屬性

<form class="panel panel-default" 
   flow-init="{target: 'url',singleFile:false,testChunks:false}" 
   flow-name="vm.flow" 
   flow-files-added="!!{pem:1}[$file.getExtension()]" 
   flow-file-success="vm.action.importCAData($message)"> 
</form> 

這是一個(gè)最簡(jiǎn)單的實(shí)現(xiàn)上傳功能的代碼,里面包含了一些屬性和方法,其他的一些參數(shù)這里暫時(shí)用不到,感興趣的請(qǐng)到上面的網(wǎng)站去查閱。

<span style="font-size:18px;" deep="8">{ 
 "flow-init":"初始化上傳的屬性值", 
 "target":"請(qǐng)求接口路徑,對(duì)應(yīng)到后臺(tái)server端請(qǐng)求", 
 "singleFile":"是否選擇單文件上傳,因?yàn)閒lowjs默認(rèn)是支持多文件上傳的, 
        當(dāng)然也有的需求會(huì)需要單文件上傳,取值為true或false." 
        "true是只支持單文件上傳,false支持多文件上傳,記得一定是boolean類(lèi)型的." 
 "testChunks":"flowjs上傳是分片的,所以他不會(huì)只往后臺(tái)發(fā)送一次請(qǐng)求,如果文件比較大, 
        它會(huì)分多片上傳,然后等所有的都上傳文成," 
        "他會(huì)去合成一個(gè)整體的文件,而這個(gè)屬性設(shè)置為true之后就會(huì)去檢測(cè)一下該請(qǐng)求在后臺(tái)是否開(kāi)啟, 
        如果開(kāi)了就會(huì)在下次即使重啟或者瀏覽器奔潰后繼續(xù)上傳,我的理解應(yīng)該是續(xù)傳吧", 
 "flow-files-added":"可以用來(lái)限制上傳文件的格式,比如excel,pem,jpeg,png等格式要求!!{pem:1,png:1}", 
 "flow-file-success":"上傳成功之后的回調(diào)函數(shù),你可以在這里面處理上傳之后的其他操作。比如使用這個(gè)組件的時(shí)候會(huì)和其他表單項(xiàng)一起提交", 
           "這時(shí)我們需要將文件的上傳路徑,文件名字和其他表單項(xiàng)一起提交到后臺(tái),而該組件不支持參數(shù)傳遞,也就是使用這個(gè)組件", 
           "分為兩步,第一步:點(diǎn)擊上傳,先將文件上傳到服務(wù)器指定路徑。同時(shí)后臺(tái)返回文件路徑,文件大小,文件名稱(chēng)等與文件相關(guān)的信息", 
           "第二步:將后臺(tái)返回的文件信息和其他表單項(xiàng)一起封裝到一個(gè)對(duì)象中,發(fā)送給后臺(tái)。后臺(tái)接到請(qǐng)求,將上傳信息進(jìn)行入庫(kù)操作" 
}</span> 

1.3實(shí)例

上面已經(jīng)對(duì)flowjs進(jìn)行了一個(gè)說(shuō)明,在這里舉個(gè)例子來(lái)使用一下該組件。關(guān)于引入js,我就不詳細(xì)說(shuō)了。

1.3.1組件配置

html代碼(里面有些我們自定義的樣式我就沒(méi)有刪除):

<form class="panel panel-default" 
   flow-init="{target: 'api/ham/tool/certificate/importCa',singleFile:true,testChunks:false}" 
   flow-name="vm.flow" 
   flow-file-added="!!{pem:1}[$file.getExtension()]" 
   flow-file-success="vm.action.importCAData($message)"> 
   <div class="panel-heading"> 
      <h4 class="app-heading"> 
         upload file 
      </h4> 
   </div> 
   <div class="panel-body"> 
      <div class="form-horizontal"> 
         <div class="asterisk-info">{{::'button-label.asterisk' | i18next }}</div> 
         <div class="form-group"> 
            <label class="col-md-3 control-label">*{{::'am.secondaryMenu.tools.certificate.item.uploadCAFile'|i18next}}</label> 
            <div class="col-md-6 " style="background-color:#eee;"> 
               <div class="file-name-list" style="min-height: 10em;"> 
                  <p ng-repeat="file in $flow.files" style="margin:10px 0px;"> 
                     {{$index+1}}  {{file.name}} 
                  </p> 
               </div> 
            </div> 
            <span class="btn btn-primary col-md-1" style="margin-left: 20px;" flow-btn>{{::'am.secondaryMenu.tools.certificate.item.upload'|i18next}}</span> 
         </div> 
      </div> 
   </div> 
   <div class="panel-footer"> 
      <div class="text-right"> 
         <button id="sampleOne-edit" type="button" class="btn btn-primary" 
             ng-click="vm.action.commitCAFile($flow)" ng-disabled="$flow.files.length < 1" 
             title="{{::'button-label.import' | i18next}}">{{::'button-label.import' | i18next}} 
         </button> 
      </div> 
   </div> 
</form> 

從這里我們可以看出,組件是基于form表單的,當(dāng)然你也可以基于其他dom節(jié)點(diǎn)上,基于表單的好處主要是在于表單的提交即submit按鈕可以直接幫到到文件上傳的$flow.upload方法上,當(dāng)用戶(hù)選擇文件后,點(diǎn)擊上傳就會(huì)執(zhí)行上傳方法,在整個(gè)form表單中該$flow是全局存在的,這樣我們就可以根據(jù)文件的大小或者是否選擇文件來(lái)確定是否允許用戶(hù)上傳,為了緩解服務(wù)器壓力,我們一般是不會(huì)讓用戶(hù)提交一些誤操作的。

1.3.2方法處理

上傳方法:$flow.upload

上傳成功的回調(diào)函數(shù):

vm.action.importCAData = function (responseResult) { 
        console.info('importCAData'); 
        vm.action.CAName = angular.fromJson(responseResult).data; 
        //var data = responseResult.data; 
        //data.keyPasswd = vm.cache.currentItem.keyPasswd; 
        var result = angular.fromJson(responseResult).result; 
        var errorMessage = angular.fromJson(responseResult).errorMessage; 
        if(result == "success"){ 
          vm.cache.caFlag = true; 
          vm.cache.alert._success("Upload CA certificates successfully!", vm.alertConfig); 
        }else { 
          vm.caDisabled = false; 
          vm.cache.alert._error(errorMessage, vm.alertConfig); 
        } 
      } 

在這里的處理是將后臺(tái)返回的文件相關(guān)的屬性賦值給其他變量。當(dāng)我們存在其他表單項(xiàng)的時(shí)候,需要將該文件的一些屬性和表單項(xiàng)封裝到同一個(gè)對(duì)象中發(fā)送給后臺(tái),讓后臺(tái)進(jìn)行一些入庫(kù)操作。
表單提交操作:

//save the form  
      vm.action.createItem = function () { 
        vm.action.data.keyPasswd = vm.cache.currentItem.keyPasswd; 
        vm.action.data.CAName = vm.action.CAName; 
        var data = {}; 
        data.caFileName = vm.action.CAName; 
        data.fileName = vm.action.data.fileName; 
        data.from = vm.action.data.from; 
        data.isExpiryStatus = vm.action.data.isExpiryStatus; 
        data.name = vm.action.data.name; 
        data.to = vm.action.data.to; 
        data.type = vm.action.data.type; 
        data.keyPasswd = vm.cache.currentItem.keyPasswd; 
        data.usingStatus = vm.action.data.usingStatus; 
        data.validityStartTime = vm.action.data.validityStartTime; 
        data.validityStopTime = vm.action.data.validityStopTime; 
        amCertificateService.createItem(data).then(function success(responseResult) { 
            if (responseResult.errorCode == 0) { 
              vm.action.reset(); 
              vm.cache.alert._success('Create radius server certificate successfully ', vm.alertConfig); 
            } else { 
              vm.cache.alert._error(responseResult.translated.errorMessageTranslated, vm.alertConfig); 
            } 
            amCertificateService.getList(); 
          }) 
          .catch(function fail(e) { 
            vm.cache.alert._error(""); 
          }) 
          .finally(function () { 
            vm.action.reset(); 
          }); 
      }; 

1.4后臺(tái)處理

后天處理我就不多說(shuō)了,自從搞上了前端,后臺(tái)的代碼我都挺長(zhǎng)時(shí)間沒(méi)動(dòng)過(guò)了,感覺(jué)挺悲哀的。但是后天使用的是springmvc,springmvc的上傳類(lèi)叫MultipartFile,當(dāng)然你也可以使用HttpServletRequest ,這個(gè)里面也可以轉(zhuǎn)為上面的那個(gè)類(lèi)。這個(gè)網(wǎng)上一搜一大片,我就不多說(shuō)了。至此,文件上傳功能就這樣實(shí)現(xiàn)了

總結(jié)

以上所述是小編給大家介紹的Angularjs上傳文件組件flowjs功能,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 詳解AngularJS Filter(過(guò)濾器)用法

    詳解AngularJS Filter(過(guò)濾器)用法

    這篇文章主要介紹了AngularJS的filter,中文名“過(guò)濾器”是用來(lái)過(guò)濾變量的值,或者格式化輸出,得到自己所期望的結(jié)果或格式的東東,的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • AngularJS的ng-click傳參的方法

    AngularJS的ng-click傳參的方法

    本篇文章主要介紹了AngularJS的ng-click傳參的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • 深入學(xué)習(xí)JavaScript的AngularJS框架中指令的使用方法

    深入學(xué)習(xí)JavaScript的AngularJS框架中指令的使用方法

    這篇文章主要介紹了深入學(xué)習(xí)JavaScript的AngularJS框架中指令的使用方法,指令的使用是Angular入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2016-03-03
  • AngularJS中update兩次出現(xiàn)$promise屬性無(wú)法識(shí)別的解決方法

    AngularJS中update兩次出現(xiàn)$promise屬性無(wú)法識(shí)別的解決方法

    最近在工作中用AngularJS中update了兩次之后發(fā)現(xiàn)$promise屬性無(wú)法識(shí)別了,后來(lái)通過(guò)查找相關(guān)的資料終于解決了,想著記錄下方便自己或者有需要的朋友,所以本文主要介紹了AngularJS中update兩次出現(xiàn)了$promise屬性無(wú)法識(shí)別的解決方法,需要的朋友可以參考借鑒。
    2017-01-01
  • AngularJS 霸道的過(guò)濾器小結(jié)

    AngularJS 霸道的過(guò)濾器小結(jié)

    本篇文章主要介紹了AngularJS 霸道的過(guò)濾器小結(jié),在實(shí)際操作中,我們需要對(duì)統(tǒng)一數(shù)據(jù)源進(jìn)行多次轉(zhuǎn)換,本文詳細(xì)討論有關(guān)過(guò)濾器的用法 。
    2017-04-04
  • Angular項(xiàng)目里ngsw-config.json文件作用詳解

    Angular項(xiàng)目里ngsw-config.json文件作用詳解

    這篇文章主要為大家介紹了Angular項(xiàng)目里ngsw-config.json文件作用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Angularjs的ng-repeat中去除重復(fù)數(shù)據(jù)的方法

    Angularjs的ng-repeat中去除重復(fù)數(shù)據(jù)的方法

    這篇文章主要介紹了Angularjs的ng-repeat中去除重復(fù)數(shù)據(jù)的方法,涉及AngularJS針對(duì)重復(fù)數(shù)據(jù)的遍歷與過(guò)濾技巧,需要的朋友可以參考下
    2016-08-08
  • AngularJS中transclude用法詳解

    AngularJS中transclude用法詳解

    這篇文章主要介紹了AngularJS中transclude用法,詳細(xì)分析了transclude的具體功能、使用技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-11-11
  • Angular 中 select指令用法詳解

    Angular 中 select指令用法詳解

    這篇文章主要介紹了Angular 中 select指令用法詳解的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • 淺談Angular6的服務(wù)和依賴(lài)注入

    淺談Angular6的服務(wù)和依賴(lài)注入

    這篇文章主要介紹了淺談Angular6的服務(wù)和依賴(lài)注入,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06

最新評(píng)論

临汾市| 栖霞市| 汾西县| 普洱| 荣昌县| 广元市| 克东县| 阿鲁科尔沁旗| 弥勒县| 顺义区| 金门县| 那坡县| 黄大仙区| 宣武区| 富源县| 宁陕县| 平遥县| 新巴尔虎右旗| 综艺| 麟游县| 巴中市| 青神县| 阿克陶县| 博白县| 英德市| 平邑县| 嘉义市| 巫溪县| 娱乐| 信阳市| 玛沁县| 正镶白旗| 饶平县| 讷河市| 扎鲁特旗| 河南省| 临泉县| 黄浦区| 惠来县| 淄博市| 鸡泽县|