IONIC:从 Cordova Camera 点击上传图像到 Cloudinary
IONIC: Upload image from Cordova Camera click to Cloudinary
尝试了几个小时后,我决定就此问题寻求社区帮助。我正在开发一个 Ionic 应用程序,我需要将图像从 Cordova Camera 上传到 Cloudinary。现在我们可以通过单击相机中的图像(将图像加载到缓存中)或选择已保存在图库中的图像来完成此操作。我可以单击图像并从图库中选取它,但是我无法将图像二进制文件上传到 Cloudinary。
我尝试通过 $cordovaCamera
、$cordovaFile
以及通过 URL 发送二进制数据,但两种方式都失败了。有什么我想念的吗?
这是我为我的相机配置的:
vm.takePicture = function () {
var options = {
quality : 100,
destinationType : Camera.DestinationType.DATA_URL,
//destinationType: Camera.DestinationType.FILE_URI,
sourceType : Camera.PictureSourceType.CAMERA,
allowEdit : true,
encodingType: Camera.EncodingType.JPEG,
targetWidth: 300,
targetHeight: 300,
popoverOptions: CameraPopoverOptions,
saveToPhotoAlbum: false
//saveToPhotoAlbum: true
};
vm.UploadPicture = function () {
vm.uploadinProgress = true;
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = Image.jpeg;
options.chunkedMode = false;
options.trustAllHosts = true;
$cordovaFile.UploadFile("http://myserver.com/images", vm.imgSrc, options).then(function(result) {
console.log("Success");
},function error() {
console.log('Error: ' + error);
});
};
};
我选择直接将图片上传到 cloudinary,跳过服务器上传的额外开销。
这可以通过 "Direct upload" 为移动设备构建的 cloudinary 功能来实现。您需要在 post 请求中设置 "upload_preset" 参数。
//设置选择相机拍摄
vm.takePicture = function () {
var options = {
quality: 50,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.CAMERA,
encodingType: Camera.EncodingType.JPEG,
};
//图库图片设置
vm.selectPicture = function () {
var options = {
quality: 50,
allowEdit: false,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
encodingType: Camera.EncodingType.JPEG
};
//然后简单地使用IONIC文件传输库
var ft = new FileTransfer();
ft.upload(vm.Image, server, win, fail, ftOptions, true);
尝试了几个小时后,我决定就此问题寻求社区帮助。我正在开发一个 Ionic 应用程序,我需要将图像从 Cordova Camera 上传到 Cloudinary。现在我们可以通过单击相机中的图像(将图像加载到缓存中)或选择已保存在图库中的图像来完成此操作。我可以单击图像并从图库中选取它,但是我无法将图像二进制文件上传到 Cloudinary。
我尝试通过 $cordovaCamera
、$cordovaFile
以及通过 URL 发送二进制数据,但两种方式都失败了。有什么我想念的吗?
这是我为我的相机配置的:
vm.takePicture = function () {
var options = {
quality : 100,
destinationType : Camera.DestinationType.DATA_URL,
//destinationType: Camera.DestinationType.FILE_URI,
sourceType : Camera.PictureSourceType.CAMERA,
allowEdit : true,
encodingType: Camera.EncodingType.JPEG,
targetWidth: 300,
targetHeight: 300,
popoverOptions: CameraPopoverOptions,
saveToPhotoAlbum: false
//saveToPhotoAlbum: true
};
vm.UploadPicture = function () {
vm.uploadinProgress = true;
var options = new FileUploadOptions();
options.fileKey = "file";
options.fileName = Image.jpeg;
options.chunkedMode = false;
options.trustAllHosts = true;
$cordovaFile.UploadFile("http://myserver.com/images", vm.imgSrc, options).then(function(result) {
console.log("Success");
},function error() {
console.log('Error: ' + error);
});
};
};
我选择直接将图片上传到 cloudinary,跳过服务器上传的额外开销。
这可以通过 "Direct upload" 为移动设备构建的 cloudinary 功能来实现。您需要在 post 请求中设置 "upload_preset" 参数。
//设置选择相机拍摄
vm.takePicture = function () {
var options = {
quality: 50,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.CAMERA,
encodingType: Camera.EncodingType.JPEG,
};
//图库图片设置
vm.selectPicture = function () {
var options = {
quality: 50,
allowEdit: false,
destinationType: Camera.DestinationType.FILE_URI,
sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
encodingType: Camera.EncodingType.JPEG
};
//然后简单地使用IONIC文件传输库
var ft = new FileTransfer();
ft.upload(vm.Image, server, win, fail, ftOptions, true);