cordova之相机拍照以及本地图片获取上传
8363WEBcordova2018-08-27

安装

1
2
3
4
5
6
7
8
9
10
图片获取
此插件定义了一个全局navigator.camera对象,该对象提供用于拍摄照片和从系统图像库中选择图像的API
支持平台:Android、BlackBerry、Browser、Firefox、FireOS、iOS、Windows、WP8、Ubuntu
cordova plugin add cordova-plugin-camera

图片上传
这个插件定义了全局FileTransfer,FileUploadOptions构造函数,用于传输文件
看你上传的方式如果你使用bs64就可以不用这个插件
支持平台:Amazon Fire OS、Android、BlackBerry 10Browser、Firefox OS**、iOS、Windows Phone 7 and 8*、Windows
cordova plugin add cordova-plugin-file-transfer

camera.getPicture官方文档

camera.getPicture 功能打开设备的默认相机应用程序接受三个参数:调用成功的回调,失败的回调,以及调用方法需要设置的参数

1
2
3
4
5
6
7
8
9
10
11
navigator.camera.getPicture(Success, Error, Options)
imageFile () {
navigator.camera.getPicture(success, error, { quality: 50,
destinationType: Camera.DestinationType.DATA_URL, sourceType:0 })
function success(imageURI) {
alert(JSON.stringify(imageURI))
}
function error(message) {
alert(JSON.stringify(message))
}
},

自定义参数

这里只列举了一些常用的 api,而且某些参数在不同平台表现会有差异,建议你去官方文档查看更详细的参数

quality:默认 50,保存图像的质量,表示为 0-100 的范围,其中 100 通常为全分辨率,不会因文件压缩而丢失。

destinationType:调用成功的返回值格式

DATA_URL(返回 base64 编码的字符串)、FILE_URI(文件 url)、NATIVE_URI(原生 url)

sourceType:图片来源

PHOTOLIBRARY(从图片库中选择图片(与 SAVEDPHOTOALBUM for Android 相同))

CAMERA(相机拍照)

SAVEDPHOTOALBUM(从图片库中选择图片(与 Android 的 PHOTOLIBRARY 相同))

Direction: 摄像头是前置还是后置,这个当然是 PictureSourceType 等于 CAMERA 时有效

BACK(前置) FRONT(后置)

saveToPhotoAlbum:拍照后将图像是否保存到设备上的相册中,返回 boolean

correctOrientation:拍照时是否旋转图像以校正设备的方向,返回 boolean

EncodingType:图片格式,可选 JPEG 或者 JPEG

MediaType:能否选择视频或者其他媒体类型,默认只能选择图片

popoverOptions:仅限 iOS 的选项,用于在从 iPad 的库或相册中选择图像时指定弹出框的锚元素位置和箭头方向

FileTransfer官方文档

分为上传和下载

上传

options:可选参数(Object)
fileKey:表单元素的名称。默认为file
fileName:在服务器上保存文件时使用的文件名。默认为image.jpg
httpMethod:要使用的HTTP方法 - PUT或者POST。默认为POST
mimeType:要上载的数据的mime类型。默认为image/jpeg
params:一组可选的键/值对,用于传递HTTP请求。(对象,键/值 - DOMString)
chunkedMode:是否以分块流模式上传数据。默认为true。(布尔)
headers:标题名称/标题值的映射。使用数组指定多个值。在iOS,FireOS和Android上,如果存在名为Content-Type的标题,则不会使用多部分表单数据

1
2
3
let ft = new FileTransfer()
ft.upload(fileURL,encodeURI("http://some.server.com/upload.php"), successCallback, errorCallback, options)
参数:文件地址,上传接口,成功回调,失败回调,上传需设置的可选参数

下载

1
2
3
4
5
6
7
8
let ft = new FileTransfer();
fileTransfer.download(uri, fileURL,successCallback successCallback, errorCallback,false,{
headers: {
"Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
}
}
)
参数:服务器url,设备上文件的文件系统URL,成功回调,失败回调,上传需设置的可选参数,是否接受所有安全证书,可选参数目前只支持header