实在我以为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