опубликовать изображение, используя правильный формат адаптера http
Я пытаюсь отправить изображение (как часть формы) на сервер PHP из приложения Worklight V6 с помощью адаптера HTTP. Изображение в кодировке 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-адаптере я кодирую данные формы и отправляю их 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