Ionic Cordova 调用原生 Api 实现拍照上传 图片到服务器功能
Ionic 调用 Device 设备 Api 获取手机的设备信息
1. 找到对应的Api: https://ionicframework.com/docs/native/device/
2. 安装相关的设备插件
ionic cordova plugin add cordova-plugin-device
npm install --save @ionic-native/device
3. 在app.module.ts中引入注册相应模块
import { Device } from '@ionic-native/device';
providers: [
StatusBar,
SplashScreen,
Device,
{provide: ErrorHandler, useClass: IonicErrorHandler}
]
在用到的页面引入看文档使用
import { Device } from '@ionic-native/device'; constructor(private device: Device) { }
...
console.log('Device UUID is: ' + this.device.uuid);
Ionic 调用照相机拍照功能。
1、找到对应的 Api: https://ionicframework.com/docs/native/camera/
2、安装相关的插件
ionic cordova plugin add cordova-plugin-camera
npm install @ionic-native/camera
3、在 app.module.ts 中引入注册相应模块
providers: [ ...
Camera
... ]
|
参数 |
类型 |
说明 |
|
quality |
Number |
保存的图像质量,范围为 0 到 100 |
destinationType |
Number |
返回值格式 |
|
sourceType |
Number |
设置图片来源 |
|
allowEdit |
Boolean |
选择图片完成是否允许编辑 |
encodingType |
Number |
JPEG = 0, PNG = 1 |
|
targetWidth |
Number |
缩放图像的宽度(像素) |
targetHeight |
Number |
缩放图像的高度(像素) |
|
mediaType |
String |
设置媒体的类型 |
cameraDirection |
Number |
Back = 0, Front-facing = 1 |
popoverOptions |
String |
iOS,iPad 弹出位置 |
saveToPhotoAlbum |
Boolean |
是否保存到相册 |
correctOrientation |
Boolean |
设置摄像机拍摄的图像是否为正确的方向 |
Ionic4 调用 cordova 插件 cordova-plugin-file-transfer 实现 图片上传
1.安装插件:
ionic cordova plugin add cordova-plugin-file-transfer
npm install @ionic-native/file-transfer
2. app.module.ts 引入依赖注入
import { FileTransfer } from '@ionic-native/file-transfer/ngx';
@NgModule({
declarations: [AppComponent],
entryComponents: [],
imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule],
providers: [
StatusBar,
SplashScreen,
Geolocation,
Device,
Camera,
FileTransfer,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
],
bootstrap: [AppComponent]
})
使用:
<ion-header>
<ion-toolbar>
<ion-title>
Tab Three
</ion-title>
</ion-toolbar>
</ion-header> <ion-content> 设备相关插件
{{myDevice.uuid}} <br>
<br> <ion-button (click)="doCamera()">
执行拍照
</ion-button> <br>
<img [src]="imgSrc" />
</ion-content>
import { Component } from '@angular/core';
import { Device } from '@ionic-native/device/ngx';
import { Camera, CameraOptions } from '@ionic-native/camera/ngx';
import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer/ngx';
@Component({
selector: 'app-tab3',
templateUrl: 'tab3.page.html',
styleUrls: ['tab3.page.scss']
})
export class Tab3Page {
public myDevice: any;
public imgSrc: any;
constructor(private device: Device, private camera: Camera, private transfer: FileTransfer) {
this.myDevice = this.device;
}
doCamera() {
const options: CameraOptions = {
quality: 100, //质量
destinationType: this.camera.DestinationType.DATA_URL, //返回图片的类型 base64 url
// encodingType: this.camera.EncodingType.JPEG, //返回格式
sourceType: this.camera.PictureSourceType.CAMERA, //从相册选择 还是摄像头拍照
// mediaType: this.camera.MediaType.PICTURE //设置媒体的类型
targetHeight: 400, //必须加
targetWidth: 400, //必须加
allowEdit: true
}
this.camera.getPicture(options).then((imageData) => {
let base64Image = 'data:image/jpeg;base64,' + imageData;
this.imgSrc = base64Image;
this.doUpload(base64Image);
}, (err) => {
// Handle error
console.log(err);
});
}
doUpload(fileSrc) {
const fileTransfer: FileTransferObject = this.transfer.create();
let options: FileUploadOptions = {
fileKey: 'file',
fileName: 'name.jpg', //名称
mimeType: 'image/jpeg',
httpMethod: "POST",
params: {
username: "我是一个测试的名称",
age: "21",
height: "180"
} /*附带的一些信息*/
// headers: {}
}
var api = 'http://127.0.0.1:8080/imgUpload';
fileTransfer.upload(fileSrc, api, options)
.then((data) => {
console.log(data);
// success
alert(JSON.stringify(data));
}, (err) => {
// error
alert(JSON.stringify(err));
})
}
}
其他:
ionic cordova run browser 调试应用
ionic cordova run browser 这个命令可以让我们在浏览器上面运行 ionic 项目,并可以调用常用的 api。
如果特殊 api 建议真机调试。如果是拍照 、定位之类的 api 可以使用这种方法调试。
问题:
1. 安装cordova-plugin-file-transfer以及其他插件都报错提示信息和node_modules模块相
关错误解决办法。
删除 node_modules , cd 到项目目录 , 重新用 npm install 安装所有的模块
2. 安装其他的模块没有问题,安装cordova-plugin-file-transfer出现错误。多尝试几次,还是不行就切换npm源:
尝试npm切换源,然后重新安装
在命令行执行命令,npm install -g nrm,全局安装 nrm。 nrm use taobao 选择源 淘宝为默认源
nrm ls 查看默认源
Ionic Cordova 调用原生 Api 实现拍照上传 图片到服务器功能的更多相关文章
- 调用Web API将文件上传到服务器的方法(.Net Core)
最近遇到一个将Excel通过Web API存到服务器的问题,其中涉及到Excel的读取.调用API.Web API怎么进行接收. 一. Excel的读取.调用API Excel读取以及调用API的代 ...
- phonegap+cordova+ionic调用原生API
上一篇博客讲了phonegap+cordova+ionic的环境搭建,今天再来分享一篇cordova调用原生API的文章.从技术角度上来讲,这并不是很难,只是有些细节要是没有注意,或者某些步骤不知道的 ...
- android 拍照上传文件 原生定位
最近公司需要一个android拍照上传和定位功能的的单一功能页面,一开始选择ionic cordova angular的一套H5框架,但是遇到和上传文件报错的问题,bug找了一天没找到原因,怀疑是io ...
- html5调用手机摄像头,实现拍照上传功能
今天做手机网站,想实现手机扫描二维码功能.首先实现在浏览器中调用手机摄像头,实现拍照功能并且把拍下的照片显示在页面并上传到服务器上,然后再在服务器端进行分析. 首先实现在浏览器中调用摄像头,当然用现在 ...
- 调用rest api杀死yarn上的应用
调用rest api杀死yarn上的应用 调用yarn reat api,通过app name 获取application id public static String getApplication ...
- webAPP如何实现移动端拍照上传(Vue组件示例)?
摘要:使用HTML5编写移动Web应用,主要是为了尝试一下“一套代码多处运行”,一个webapp几乎可以不加修改的运行在PC/Android/iOS等上面运行.但是写到现在觉得虽然这种方式弊大于利,不 ...
- Android4.4 + WebAPI 实现拍照上传
网上有很多关于拍照上传的实现方法,如果用新版本android去运行有可能会发现根本实现不了.主要原因是android从4.4版本开始通过intent.ACTION_GET_CONTENT打开选择器后, ...
- Android图片上传,可以选择多张图片,缩放预览,拍照上传等
仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...
随机推荐
- 文本编辑器Vim/Neovim任意代码执行漏洞(CVE-2019-12735)
受影响版本: Vim < 8.1.1365, Neovim < 0.3.6 前提:开启modeline 0x01 开启modeline 在你的home下的.vimrc文件中增加一行: se ...
- com.mysql.jdbc.Driver not loaded. Are you sure you've included the correct jdbc driver in :jdbc_driver_library?
把对应的jdbc jar包放到 /usr/share/logstash/logstash-core/lib/jars/路径 下即可.可以在配置文件不用配置驱动库.
- python 私有和保护成员变量如何实现?—— "单下划线 " 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量;" 双下划线 " 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据
默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量.在python中定义私有变量只需要在变量 ...
- 【OI备忘录】trick汇总帖
OI中的那些实用的小trick 在OI中,我们时常会用到一些小技巧,无论是代码方面还是数学方面抑或是卡常,都有很多不错的小技巧. 鄙人不才,往往没办法想出来,于是就有了这篇汇总帖~ 如有疏漏,还请da ...
- 国产MM才叫漂亮[景甜]
- Echarts地图合并提取
Echarts简述 :一个纯 Javascript 的图表库. //参数配置 - 如果不熟悉请参考官网 - 此处以重庆地图为例 var options = { "title" : ...
- 列举 Python2和Python3的区别?
1.print 在python2中,print被视为一个语句而不是一个函数,python3中,print()被视为一个函数 2.整数的除法 在python2中,键入的任何不带小数的数字,将被视为整数的 ...
- VS - Paginated
BootstrapPagination.cshtml @model PaginationModel <div class="pagination"> <ul> ...
- PHPStorm启动问题--Failed to load JVM DLL
一.问题 启动PHPStorm时突然遇到PHPStorm无法启动的问题,提示:Failed to load JVM DLL,如图所示:
- lixuxmint系统定制与配置(1)-系统初始配置
小书匠Linux 经常安装新的系统,每次安装完都得去搜索一边如何将系统部署为之前的环境,不仅耗费时间,还不一定能弄回之前的环境,现在把从裸机->到工作环境的系统定制及配置过程记录下来,期间的配置 ...