在Slim Framework中使用POST发送文件

时间:2016-03-01 17:06:07

标签: php file-upload slim

我需要上传文件以使用Slim在我的REST API上进行服务,在我以前用过的代码中使用:

$_datos = $app->request;

但我用过:

$_datos->post('FileInputName');

哪个没有分配任何东西。请帮我! 完整代码:

$app->post('/aplicar',function() use($app) {
    try{
        //Code block for capture file and save it ¡Don't Work!
        if(basename($_FILES['_hojaVida']['name']) != null){
            if(!is_dir("./hojas_vida/"))
                mkdir("./hojas_vida/", 0777);

            $dir_subida = './hojas_vida/';
            $fichero_subido = $dir_subida . $POST['_nombre'].'-'.$POST['_apellido'].'-'.str_replace(' ', '-', basename($_FILES['_hojaVida']['name']));

            echo '<pre>';
            if (move_uploaded_file($_FILES['_hojaVida']['tmp_name'], $fichero_subido)) {
                echo "El fichero es válido y se subió con éxito.\n";
            } else {
                echo "¡Posible ataque de subida de ficheros!\n";
            }
        } //End Code block for capture file and save

        $app->response()->header("Content-Type", "application/json");
        $_datos = $app->request;
        $_connection = getConnection();
        $_connection->beginTransaction();
        $_dbh = $_connection->prepare(
            "INSERT INTO Aplicable(_id_VAC, Nombre_APL, Apellidos_APL, Curriculum_APL, Creacion_APL) 
            VALUES (:_id_VAC,:Nombre_APL,:Apellidos_APL,:Curriculum_APL,NOW());"
        );
        $_estado = $_dbh->execute(
            array(
                ':_id_VAC' => $_datos->post('_id_VAC'),
                ':Nombre_APL' => $_datos->post('_nombre'),
                ':Apellidos_APL' => $_datos->post('_apellido'),
                ':Curriculum_APL' => str_replace(' ', '-', $_datos->post('_curriculum'))
            )
        );

        if ($_estado){
            $app->response->headers->set("Content-type", "application/json");
            $app->response->status(200);
            $app->response->body(json_encode(array('estado'=>true,'mensaje'=>'Datos insertados correctamente.', 'Datos'=>var_dump($app->request))));

            $destinatario = $_datos->post('_correo');
            $asunto = "Subject text" ;

            //para el envío en formato HTML 
            $headers = "MIME-Version: 1.0\r\n";
            $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

            //dirección del remitente 
            $headers .= "From: name <info@domain.com>\r\n";

            //dirección de respuesta, si queremos que sea distinta que la del remitente 
            //$headers .= "Reply-To: mailto@domain.com\r\n"; 

            //ruta del mensaje desde origen a destino 
            $headers .= "Return-path: mail3@domain.com.co\r\n";

            //direcciones que recibián copia 
            $headers .= "Cc: copymail@domain.com\r\n";

            //direcciones que recibirán copia oculta 
            $headers .= "Bcc: mail1@domain.co,mail2@domain.co\r\n";

            mail($destinatario,$asunto,$cuerpo,$headers);
        }
        $_connection->commit();
        $_connection = null;

    }catch(PDOException $e){
        $app->response->status(500);
        echo "Error: Insertando persona: " . $e->getMessage();
    }
});

1 个答案:

答案 0 :(得分:0)

您可以使用此代码

        $tempFile = $_FILES['Filedata']['tmp_name'];
        $size = $_FILES['Filedata']['size']/1024;
        $pos = strrpos($_FILES['Filedata']['name'], ".");
        $label = $app->request->post('newFileName');
        $fileName = time()."-".$label.substr($_FILES['Filedata']['name'], $pos);