ng-Cordova插件之fileTransfer的运用

实在我以为gitHub上的文档说的已很详细了,然则鉴因而一个比较经常使用的插件以及貌似使用方法轻微的要比ng-camera那样看起来简朴点,所以这里轻微的写写记录下

$cordovaFileTransfer的用途:用于文件的上传和下载,图片表单等等

$cordovaFileTransfer支撑上传、下载等,这里我们临时说下文件的上传,此处用图片举例

需求:照相、检察、上传

详细完成:

前端代码:

<ons-list-item class="list-item-ons" style="padding: 0;margin-top: 0.5em" ng-repeat="picture in pictures" ng-init="index = $index+1">
     <ons-carousel style="height: 3.2em;width: 180%;" swipeable item-width="60%" auto-scroll var="carouselCamear">
         <ons-carousel-item class="list-action-menu">
             <ons-row>
                 <ons-col width="5">
                     <div class="divBorder{{index}}"></div>
                 </ons-col>
                 <ons-col width="10%">
                     <div class="divCircle">
                         <div class="circleValue">{{index}}</div>
                     </div>
                 </ons-col>
                 <ons-col width="40%">
                     <div class="divDate">现场照相</div>
                 </ons-col>
                 <ons-col ng-click="takePicture($index)">
                     <div class="divImg">
                         <img class="imgValue"
                              src="images/camera.png">
                     </div>
                 </ons-col>
                 <ons-col width="5%" style="text-align: right" ng-if="picture.value">
                     <div class="checkLine"></div>
                 </ons-col>
                 <ons-col ng-if="picture.value" ng-click="checkPic($index)">
                     <div class="check">检察</div>
                 </ons-col>
             </ons-row>
         </ons-carousel-item>
         <ons-carousel-item class="list-action-item">
             <p style="height:60px;background-color: #ffa500;color:white;margin: -10px;padding-left: 11%;line-height: 60px">
                 <ons-icon icon="fa fa-trash-o"></ons-icon>
             </p>
         </ons-carousel-item>
     </ons-carousel>
 </ons-list-item>

这里用到onsen中的carousel,固然,这里不需剖析重要也就是ng-repeat

$scope.pictures = [
     {value: false, imgSrc: ""},
     {value: false, imgSrc: ""},
     {value: false, imgSrc: ""},
     {value: false, imgSrc: ""},
     {value: false, imgSrc: ""}];

个中在图片上传中最重要的是imgSrc

上传的代码以下(我这里是写在factory内里,由于能够共用):

upLoad:function(imgRul,tempParam,success,error){
     try{
         var options = new FileUploadOptions();
         options.filekey = "file";
         options.fileName = "test.jpg";
         options.mimeType = "image/jpeg";
         options.chunkedMode=false;
         options.params = tempParam;
 
         var fileTransfer = new FileTransfer();
         fileTransfer.upload(
             imgRul,
             encodeURI("http://222.92.140.204:8080/hms-furui/afwkFile/upload"),
             success,
             error,
             options
         );
     }catch(e){
         showAlert('提醒',e);
     }
 }

简明说下内里重要的东西

第一是上传:

fileTransfer.upload(
     imgRul,
     encodeURI("http://222.92.140.204:8080/hms-furui/afwkFile/upload"),
     success,
     error,
     options
 );

个中第一个参数是图片在当地的URL地点,第二个参数是service地点,官网文档是encoded by encodeURI();固然我们都晓得这里是为了防备乱码。第三个和第四个参数是胜利和失利的回调函数,这些都很简朴,末了一个options貌似有些考究,睁开说下:

Options是可选的一些参数,经由过程var options = new FileUploadOptions()猎取出来(插件封装好的)

然后添补options中的一些属性值

1、 fileKey:这个元素的称号,服务端经由过程这个拿,我的明白是个key

2、 filename:上传的文件存在服务端的称号,默许是image.jpg

3、 httpMethod:望文生义,http的要求体式格局,默许是post

4、 mimeType:一种规范,默许的是image/jpeg

5、 params:参数,这内里放的是一个对象,除了传过去图片另有别的一些信息啦,比方id啊啥啥啥杂乱无章的都在这里,有效!

固然另有别的一些东西貌似我们也不怎样用到

也就这么简朴,我们就能够完成图片的上传了

然则很忧郁,这里我要完成过个图片的上传,说实话我从官网文档中并没有找到怎样完成过个图片的上传,我以为是能够的,由于官网有这么一句话:                                               S!有木有,然则文档中又有这句话a!有木有!

好了,这些都先不去在乎了吧,我再查查和问问怎样完成一次传送多个图片,现在我的完成体式格局是(固然也照样不怎样圆满的):

//保留上传图片
 $scope.upLoad = function () {
     var errorCount = 0;
     var success = function (r) {
         errorCount += 1;
     };//胜利的毁掉函数
     var error = function (error) {
         errorCount += 1;
         showAlert('提醒', "第" + errorCount + "张图片上传失利!上传住手!");
         return;
     };
     var tempParam = {
         "document_id": orderId,
         "document_type": orderStatus,
         "created_by": user,
         "url": "pictures"
     };
     for (var i = 0; i < $scope.pictures.length; i++) {
         if ($scope.pictures[i].imgSrc != "") {
             var imgUrl = $scope.pictures[i].imgSrc;
             workOrderFactory.upLoad(imgUrl, tempParam, success, error);
         }
     }
     showAlert('提醒', '图片上传胜利!');
 };

推断$scope.pictures[i].imgSrc有木有值,有的话,就传,失利就住手!怎样推断失利住手,我这里加了个变量:errorCount,每次上传一张的时刻就会调用回调函数,error,或许success,我在success内里每次胜利就+1,轻易提醒第几张上传毛病,在error内里给出提醒信息,而且住手函数的继承。假如没有碰到return,则申明图片都上传胜利了,所以也一样给出提醒信息。

平常我会以为不会涌现毛病的,由于一点击保留,就跳出来图片上传胜利,快到真的不敢相信(我不晓得是否是还存在异步的题目,然则最少现在我测试的都是么有题目的)

后续假如另有更好的一次上传多个图片的方法会连续整顿。假如有bug也会实时来修正!

好吧,临时说到这里咯n(≧▽≦)n

    原文作者:isNealyang
    原文地址: https://segmentfault.com/a/1190000008391079
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞