【问题标题】:WinJS.xhr blob image doesn't show in php server?WinJS.xhr blob 图像不显示在 php 服务器中?
【发布时间】: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


    【解决方案1】:

    工作。答案如下:

    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'; 
            }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-28
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-28
      • 2017-04-23
      • 1970-01-01
      相关资源
      最近更新 更多