如何通过基础64中的Webservice PHP-MySQL映像获取?

时间:2016-12-20 18:30:24

标签: php mysql json web-services

我需要打印这个“print json_encode($ datos); base64中的图片。

你好朋友会看到我想得到一个名为CATEGORIES的表的所有记录,其中包含字段IDCATEGORIA,NAMECATEGORIES,IMAGENCATEGORI,使用PHP和MYSQL制作的Webservice并用JSON显示给我,问题是Web服务只返回我IDCATEGORY和NAMECATEGORIES但IMAGENCATEGORI没有显示它,这是我第一次用PHP管理Webservices,我只用Java占用了Webservices,而在Java中,有必要获得数据库的IMAGENCATEGORIA字段并进行转换然后将该图像显示为base64然后将其显示为base64中已经形成JSON的其他数据旁边的字符串,有人会知道如何在我的PHP代码中实现它,这里我留下PHP文件:

抱歉我的英语非常糟糕xD

Meta.php

/**
 * Representa el la estructura de las metas
 * almacenadas en la base de datos
 */
require 'Database.php';

class Meta
{
    function __construct()
    {
    }

    /**
     * Retorna en la fila especificada de la tabla 'meta'
     *
     * @param $idMeta Identificador del registro
     * @return array Datos del registro
     */
    public static function getAll()
    {
        $consulta = "SELECT * FROM meta";
        try {
            // Preparar sentencia
            $comando = Database::getInstance()->getDb()->prepare($consulta);
            // Ejecutar sentencia preparada
            $comando->execute();

            return $comando->fetchAll(PDO::FETCH_ASSOC);

        } catch (PDOException $e) {
            return false;
        }
    }
}

?>

obtener_metas.php

<?php
/**
 * Obtiene todas las metas de la base de datos
 */

require 'Meta.php';

if ($_SERVER['REQUEST_METHOD'] == 'GET') {

    // Manejar petición GET
    $metas = Meta::getAll();

    if ($metas) {

        $datos["estado"] = 1;
        $datos["metas"] = $metas;

        print json_encode($datos);
    } else {
        print json_encode(array(
            "estado" => 2,
            "mensaje" => "Ha ocurrido un error"
        ));
    }
}

1 个答案:

答案 0 :(得分:1)

首先,从您的问题来看,IMAGENCATEGORI字段是否包含实际图像(存储为BLOB的原始图像)或文件名或路径是不是很清楚。

以下是我在if ($metas)内修改obtener_metas.php块的方法。

1。如果IMAGENCATEGORI字段是您的图像,则存储为blob

if ($metas) {
    $datos["estado"] = 1;
    $datos["metas"] = [];
    foreach($metas as $meta) {
      // Push an entry in the new array, replacing raw image with base64-encoded
      $datos["metas"][] = array(
        'IDCATEGORIA'     => $meta['IDCATEGORIA'],
        'NAMECATEGORIES'  => $meta['NAMECATEGORIES'],
        'IMAGENCATEGORIA' => base64_encode($meta['IMAGENCATEGORIA']),
      );
    }
    print json_encode($datos);
} else {
    // your original code
}

2。如果IMAGENCATEGORI字段是您图像的文件名/路径

几乎相同,只需要先从文件系统中读取文件。

$imagesPath = '/path/to/your/images'; // replace with actual path
if ($metas) {
    $datos["estado"] = 1;
    $datos["metas"] = [];
    foreach($metas as $meta) {
      // Push an entry in the new array, replacing raw image with base64-encoded
      $imgFileContents = file_get_contents($imagesPath . '/' . $meta['IMAGENCATEGORIA'];
      $datos["metas"][] = array(
        'IDCATEGORIA'     => $meta['IDCATEGORIA'],
        'NAMECATEGORIES'  => $meta['NAMECATEGORIES'],
        'IMAGENCATEGORIA' => base64_encode($imgFileContents),
      );
    }
    print json_encode($datos);
} else {
    // your original code
}

希望这会有所帮助。请告诉我!