Ionic3/4中如何上传图片(拍照/图片选择)

本文详细介绍了在Ionic3/4应用中如何实现拍照和选择图片上传,包括前置条件、实现思路、逻辑及代码示例。讨论了iOS与Android的权限差异,强调了图片上传过程中对用户反馈的重要性。同时,提醒开发者注意图片上传与文件上传的区别,以避免混淆不同的API。
摘要由CSDN通过智能技术生成

[Talk is cheap. Show me the code]

不想看理论知识请直接移步最后代码示例。

(本文还是建议看下整体思路)

最初我写APP的时候使用 了Ionic3,今天去看了下文档,Ionic4相对于3的文档说明更清晰,代码也更加简化,社区变得越来越好还真是有点小开心呢。但也有批评说Ionic4相对于3更复杂,坑更多。

手机端图片上传有两种方式一种是 拍照上传 另一种是 图片选择 (请注意这里与文件选择的区别) 之后上传,废话不多说进入正题。

拍照上传:

一、前置条件

1.1、引入js和本地依赖,这样我们就可以使用camera的一些api

npm install --save @ionic-native/cameranpm install --save @ionic-native/camera

1.2添加cordova插件

ionic cordova plugin add cordova-plugin-camera

然后在config.xml中会生成,有时需要你自己添加进去

<plugin name="cordova-plugin-camera" spec="^4.0.3" />

相对android,ios对于权限的控制要更严格一些,ios10以下需要你在config.xml底

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
可以使用ionic-native的Camera插件来实现上传相册图片拍照上传。具体实现可以参考以下代码: // 导入相关模块 import { Camera, CameraOptions } from '@ionic-native/camera/ngx'; import { File } from '@ionic-native/file/ngx'; import { Transfer, TransferObject } from '@ionic-native/transfer/ngx'; // 初始化相关变量 private fileTransfer: TransferObject; private imageSrc: string; // 构造函数初始化fileTransfer constructor(private camera: Camera, private file: File, private transfer: Transfer) { this.fileTransfer = this.transfer.create(); } // 上传图片方法 uploadImage() { // 设置相机选项 const options: CameraOptions = { quality: 100, destinationType: this.camera.DestinationType.FILE_URI, sourceType: this.camera.PictureSourceType.PHOTOLIBRARY, encodingType: this.camera.EncodingType.JPEG, mediaType: this.camera.MediaType.PICTURE } // 调用相机插件获取图片 this.camera.getPicture(options).then((imageData) => { // 获取文件名 const fileName = imageData.substring(imageData.lastIndexOf('/') + 1); // 获取文件路径 const path = imageData.substring(0, imageData.lastIndexOf('/') + 1); // 移动文件到临时目录 this.file.moveFile(path, fileName, this.file.cacheDirectory, fileName).then((result) => { // 获取临时文件路径 const filePath = result.nativeURL; // 设置上传参数 const options = { fileKey: 'file', fileName: fileName, chunkedMode: false, mimeType: 'image/jpeg', headers: {} }; // 开始上传 this.fileTransfer.upload(filePath, 'http://example.com/upload.php', options).then((data) => { // 上传成功,返回服务器返回的数据 console.log(data); }, (err) => { // 上传失败,打印错误信息 console.log(err); }); }, (err) => { // 移动文件失败,打印错误信息 console.log(err); }); }, (err) => { // 获取图片失败,打印错误信息 console.log(err); }); }
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值