WinJS.xhr blob图像不会在php服务器中显示?

时间:2014-06-11 15:40:35

标签: php windows-runtime winjs restful-architecture

使用winRT,winJS,javaScript&amp ;;从win 8.1平板电脑上传图像html 5.

我从图片中的图像生成blob并通过RESTful api上的winJS.xhr将其发送到服务器我有一个捕获帖子并将其保存到linux服务器上的位置的函数。

问题是图像是空的还是不可读的。问题是在php中,我测试了不同的选项,没有什么能让img可读吗?

如何获取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)  }}

谢谢

1 个答案:

答案 0 :(得分:0)

工作。这是答案:

public function uploadpicture(){

if($_FILES['data']['error'] == 0){
            // success - move uploaded file and process stuff here
        echo 'success';

         echo var_dump($_FILES) ;
         move_uploaded_file($_FILES["data"]["tmp_name"],"....server location".$_FILES["data"]["name"] );

        }else{
            // 'there was an error uploading file' stuff here....  
            echo 'error uploading file'; 
        }
}