PHP服务器未正确接收multipart / form-data

时间:2017-01-07 22:47:28

标签: javascript php angularjs cordova multipartform-data

我试图将图片从我的apache cordova app上传到我的Php服务器。 我有一个Android应用程序,使用来自服务tu上传文件的相同服务,并且工作完美。

当我尝试从我的apache-cordova上传文件时,我认为服务器没有正确接收文件。

使用我的Android应用程序,我发送一个包含multipart / form-data

的文件

这就是我的apache-cordova所做的:

var opciones = {
    fileKey: "file",
    fileName: "image",
    chunkedMode: false,
    mimeType: "multipart/form-data",
    params : {'fileName': "image"}
};


//guardar imagen cargada
    function guardarImagen(urlImagen, opciones) {
        debugger;
        console.log("la ruta de la imagen es:"+urlImagen);
        return $cordovaFileTransfer.upload(cargarImagenUrl, urlImagen, opciones)
            .then(function(response) {
                respuesta = response;
                debugger;
                return respuesta;
        });

    }

我的PHP:

 $image = new \Bulletproof\Image($_FILES);
//$idComplejo= $_POST['idComplejo'];
  //$idComplejo= $decoded_token->idComplejo;
  $idComplejo= "21";
  $image->setName("1");
  $image->setLocation(__DIR__ . "/../imagenes/complejo----------".$idComplejo);

  //$image->setLocation("imagenes/complejo-".$idComplejo);
  $image->setSize(1, 1148576);
  $image->setDimension(10000, 10000);
  $error = "Not uploaded".$image;

  if($image['image']){
    $upload = $image->upload();
    $directorio = "https://www.myhosting.com/imagenes/complejo-".$idComplejo."/1.".$image->getMime();

    if($upload){
      $result = $db->query("SELECT rutaImagen FROM imagen WHERE idComplejo = :idComplejo AND nroImagen = 1",
          array("idComplejo" => $idComplejo));

      if(count($result) == 0){
        $error.="no se encontro imagen para ese complejo, se procede a guardar";
        // Nunca se cargo la imagen nro 1 y se procede a guardarla en la BD
        $result = $db->query("INSERT INTO imagen (idComplejo, nroImagen, esPrincipal, rutaImagen) VALUES (:idComplejo, 1, 0, :directorio)",
        array("idComplejo" => $idComplejo, "directorio" => $directorio));

        $result= mysql_query("") or die(mysql_error());
        // Imprimimos
        $response["success"] = 1;
        $response["message"] = "La imagen se ha guardado correctamente.";
        echo ($response);
      }
      // verificmos que devuelva datos
      else if (count($result) > 0) {

        $result = $db->query("UPDATE imagen SET rutaImagen = :directorio WHERE idComplejo = :idComplejo AND nroImagen = 1",
        array("idComplejo" => $idComplejo, "directorio" => $directorio));
        echo json_encode("La imagen se ha actualizado con éxito.");
      }

    }
    else{
      $error .= "La imagen no se guardo debido a:" . $image["error"];
    }

  }

  file_put_contents('errors.txt', $error, FILE_APPEND);
  file_put_contents('errors.txt', error_get_last(), FILE_APPEND);
?>

行$ error ="未上传"。$ image;没有抓到任何东西

就像我说的,我认为服务器没有正确接收文件。

我正确地获取了我要上传的文件,因为在发送文件之前控制台显示:

  

" la ruta de la imagen es:file:///data/user/0/com.myapp.example/files/1483828947649.jpg"

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

错误出现在这个无辜的行中:

$error = "Not uploaded"+$image;

+运算符尝试将$image转换为int。 你可以试试

$error = "Not uploaded" . $image;

另见: how to convert object into string in php