【发布时间】:2014-08-01 18:14:02
【问题描述】:
使用 winRT、winJS、javaScript 和 html 5 从 win 8.1 平板电脑上传图像。
我从图片中的图像生成一个 blob,并通过 RESTful api 上的 winJS.xhr 将其发送到服务器我有一个函数可以捕获帖子并将其保存到 linux 服务器上的位置。
问题是图像为空或不可读。问题出在 php 中,我测试了不同的选项,没有什么能让 img 可读?
如何获取图片?
winRT 代码:
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 服务器:
/**
*
*
* @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) 结果:
{ ["data"]=> array(5) { ["name"]=> string(4) "blob" ["type"]=> string(9) "image/bmp" ["tmp_name"]=> string(14) "/tmp/phpTg4t5M" ["error"]=> int(0) ["size"]=> int(254970) }}
谢谢
【问题讨论】:
标签: php windows-runtime winjs restful-architecture