douzhanlai4671 2014-06-11 15:40
浏览 45
已采纳

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

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

  • 写回答

1条回答 默认 最新

  • douzhou7124 2014-06-13 14:59
    关注

    Working. Here's the answer:

    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'; 
            }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python