Uploading an Image from win 8.1 tablet using winRT, winJS, javaScript & html 5.
I generating a blob from an image in pictures and sending it to server via winJS.xhr on RESTful api I have a function that captures the post and saves it to location on the linux server.
Problem is that image is empty or unreadable. The problem is in the php, i tested different option, nothing makes the img readable?
How to get the img?
winRT code:
function uploadImg(){
var url2="http://serverurl/sr/uploadpicture";
var picturesLibrary = Windows.Storage.KnownFolders.picturesLibrary;
picturesLibrary.getFileAsync("test.bmp").then(
function completeFile(file) {
return file.openAsync(Windows.Storage.FileAccessMode.readWrite);
}).then(
function completeStream(stream) {
// Do processing.
var blob = MSApp.createBlobFromRandomAccessStream("image/bmp", stream);
//document.getElementById('imgCapture').src=blob;
var fd = new FormData();
fd.append('test', 'lalalala');
fd.append('data', blob);
return WinJS.xhr({ type: "POST", url: url2, data: fd });
}).then(
function (request) {
document.getElementById('txteserver').value = "uploaded file:"+request.response;
},
function (error) {
document.getElementById('txteserver').value= "error uploading file";
});
}
Php server:
/**
*
*
* @url POST /sr/uploadpicture
*/
public function uploadpicture()
{
// header("Content-Type: image/bmp");
echo "test";
echo $_POST['test'];
$data = $_POST['data'];
echo $data;
echo 'isset';
echo isset($_FILES['data']);
if($_FILES['data']['error'] == 0){
// success - move uploaded file and process stuff here
echo 'success';
}else{
// 'there was an error uploading file' stuff here....
echo 'error uploading file';
}
echo var_dump($_FILES) ;
if (($data)=="") {echo 'empty image ';}
else { echo 'Testing uploading picture ';};
$file = "test.bmp";
$img=base64_decode($_FILES['data']['name']);
$img2=base64_decode($_POST['data']);
file_put_contents($file,img2);
}
echo var_dump($_FILES) result:
{ ["data"]=> array(5) { ["name"]=> string(4) "blob" ["type"]=> string(9) "image/bmp" ["tmp_name"]=> string(14) "/tmp/phpTg4t5M" ["error"]=> int(0) ["size"]=> int(254970) }}
Thanks