无法在 Ionic 应用程序中打开手机相机
Unable to open mobile camera in Ionic app
我的 objective 是通过相机或文件存储上传多个文件,我使用 ng2FileSelect 通过 Ionic 应用程序将多个文件上传到服务器,这是 HTML:
<input (change)="upload()" type="file" ng2FileSelect
[uploader]="uploader" multiple accept="image/*" capture="environment">
在 运行 chrome 上的本地主机上,它成功地提供了选项,可以打开移动相机或从存储中 select 文件。但是在 Ionic DevApp 或 android 设备(通过 APK)上对其进行测试时,它直接打开文件存储并且不提供打开移动相机的选项。是否可以通过上面的输入标签实现上述objective,或者我必须使用单独的方法从相机上传文件,例如Cordova相机插件等?
ng2FileSelect 特定于浏览器,它可能会在本机设备上产生问题。我的建议是使用cordova相机插件。
您可以通过此命令安装插件
ionic cordova plugin add cordova-plugin-camera
npm install @ionic-native/camera
支持以下平台
- Android
- 浏览器
- iOS
- Windows
用法
import { Camera, CameraOptions } from '@ionic-native/camera/ngx';
constructor(private camera: Camera) { }
...
const options: CameraOptions = {
quality: 100,
destinationType: this.camera.DestinationType.FILE_URI,
encodingType: this.camera.EncodingType.JPEG,
mediaType: this.camera.MediaType.PICTURE
}
this.camera.getPicture(options).then((imageData) => {
// imageData is either a base64 encoded string or a file URI
// If it's base64 (DATA_URL):
let base64Image = 'data:image/jpeg;base64,' + imageData;
}, (err) => {
// Handle error
});
我的 objective 是通过相机或文件存储上传多个文件,我使用 ng2FileSelect 通过 Ionic 应用程序将多个文件上传到服务器,这是 HTML:
<input (change)="upload()" type="file" ng2FileSelect
[uploader]="uploader" multiple accept="image/*" capture="environment">
在 运行 chrome 上的本地主机上,它成功地提供了选项,可以打开移动相机或从存储中 select 文件。但是在 Ionic DevApp 或 android 设备(通过 APK)上对其进行测试时,它直接打开文件存储并且不提供打开移动相机的选项。是否可以通过上面的输入标签实现上述objective,或者我必须使用单独的方法从相机上传文件,例如Cordova相机插件等?
ng2FileSelect 特定于浏览器,它可能会在本机设备上产生问题。我的建议是使用cordova相机插件。
您可以通过此命令安装插件
ionic cordova plugin add cordova-plugin-camera
npm install @ionic-native/camera
支持以下平台
- Android
- 浏览器
- iOS
- Windows
用法
import { Camera, CameraOptions } from '@ionic-native/camera/ngx';
constructor(private camera: Camera) { }
...
const options: CameraOptions = {
quality: 100,
destinationType: this.camera.DestinationType.FILE_URI,
encodingType: this.camera.EncodingType.JPEG,
mediaType: this.camera.MediaType.PICTURE
}
this.camera.getPicture(options).then((imageData) => {
// imageData is either a base64 encoded string or a file URI
// If it's base64 (DATA_URL):
let base64Image = 'data:image/jpeg;base64,' + imageData;
}, (err) => {
// Handle error
});