标签:ibm-mobilefirst php image urlencode adapter
我试图使用HTTP适配器从Worklight V6应用程序将图像(作为表单的一部分)发布到PHP服务器.该图像是base64编码的
navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 8,
destinationType: navigator.camera.DestinationType.DATA_URL });
..稍后在代码中
$('#myImageImg').attr('src', "data:image/jpeg;base64," + imageData);
我将图像发送到适配器
var img = $('#myImageImg').attr('src');
var formData = {"someField" : name,
"image" : img };
var invocationData = {
adapter : 'emailAdapter',
procedure : 'sendEmail',
parameters : [ formData ]
};
var options = {
onSuccess : sendEmailOK,
onFailure : sendEmailFail,
invocationContext : {}
};
$.mobile.showPageLoadingMsg();
WL.Client.invokeProcedure(invocationData,options);
在我的HTTP适配器中,我uriencode表单数据并发送它x-www-form-urlencoded
function sendEmail(inputData) {
var uri = 'myStuff/sendEmail.php';
var imageData="image='" + inputData.image+"'";
var formData = encodeURI(imageData);
var input = {
method : 'post',
returnedContentType : 'html',
path : path,
body: { "contentType" : "application/x-www-form-urlencoded",
'content' : formData
}
当我解码数据并使用我的php服务器将其保存到文件时,Windows照片查看器显示错误消息“Windows照片查看器无法打开此图片,因为该文件似乎已损坏,已损坏或太大”.
我是一个php初学者,但这里是我使用的PHP代码
<?php
$image = $_POST['image']
$decoded=base64_decode($image);
file_put_contents('C:\apache\htdocs\myStuff\newImage.JPG',$decoded);
我确定我犯了某种愚蠢的初学者错误,但我不确定它是否在我的适配器代码,php代码或我的worklight客户端代码中.提前感谢您的任何建议.
JT
解决方法:
我认为问题是base64编码数据前面的“data:image / jpeg; base64”.将图像发送到没有该前缀的适配器,或者在发布到服务之前将其在适配器中剥离.
标签:ibm-mobilefirst,php,image,urlencode,adapter 来源: https://codeday.me/bug/20191003/1850032.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。