我使用ionic 2开发cordova项目将base64发送到服务器图像已损坏
Posted
技术标签:
【中文标题】我使用ionic 2开发cordova项目将base64发送到服务器图像已损坏【英文标题】:I develop cordova project with ionic 2 send base64 to server the image is corrupted 【发布时间】:2017-09-22 08:40:54 【问题描述】:我的目的是拍照并通过 ajax 调用发送到服务器 base64。我的问题是,当我将它发送到服务器并在浏览器上测试它时它已损坏,尽管它在设备上显示正常,而且这个问题仅在 ios android 上工作正常,当我发送 base64 时我可以在浏览器中打开它我的代码一张图:
takePicture(qidSide)
Camera.getPicture(
destinationType: Camera.DestinationType.DATA_URL,
targetWidth: 1000,
quality: 25,
targetHeight: 700
).then((imageData) =>
// imageData is a base64 encoded string
if (qidSide == 'front')
this.QIDfront = this._sanitizer.bypassSecurityTrustUrl("data:image/jpeg;base64,"+imageData);
else
this.QIDback = this._sanitizer.bypassSecurityTrustUrl("data:image/jpeg;base64," + imageData);
, (err) =>
console.log(err);
);
并发送到服务器
var jsonBody = frontQID: this.QIDfront.changingThisBreaksApplicationSecurity, backQid: this.QIDback.changingThisBreaksApplicationSecurity ;
this.xhrService.xhrCall( method: 'post', url: 'updateSignature', data: jsonBody ).then(data =>
let response: any = data;
).catch(err =>
);
请任何人帮忙,因为我从 3 天开始就在这个问题上?
【问题讨论】:
【参考方案1】:问题是我将base64作为纯字符串发送,这是错误的,任何url在发送到服务器之前都应该进行编码,解决方案是:
var jsonBody = frontQID: encodeURIComponent(this.QIDfront.changingThisBreaksApplicationSecurity), backQid: encodeURIComponent(this.QIDback.changingThisBreaksApplicationSecurity) ;
并且在后端应该对其进行解码
【讨论】:
以上是关于我使用ionic 2开发cordova项目将base64发送到服务器图像已损坏的主要内容,如果未能解决你的问题,请参考以下文章
构建vue+ionic+cordova项目,开发全平台APP
如何将 Ionic Cordova 3 迁移到 Ionic Cordova 5?
FCM 推送通知在 android 中不起作用(使用 cordova-plugin-fcm 2.1.1 的 Ionic 项目)