Загружать, извлекать и отображать изображения в HBase с помощью Thrift и Php

Я настроил HBase и пытаюсь использовать Thrift-Php для загрузки изображения, а затем его отображения. У меня есть одна таблица с одним семейством столбцов с именем info и я использовал что-то вроде:

$tmpName=$_FILES["file"]["tmp_name"];
$fp = fopen($tmpName, 'r');
$data = fread($fp, filesize($tmpName));
$data = addslashes($data);
fclose($fp);
try {
    $mutations = array(
         new Mutation( array(
            'column' => 'info:pic',
            'value' => $data
            ) ),
            );
$client->mutateRow( $t, $username, $mutations );
   } catch ( IOError $e ) {
        echo( "expected error: {$e->message}\n" );
   }

Что, кажется, работает, поскольку оно сохраняет что-то в Hbase, а затем

$arr = $client->getRow($t, $username);
foreach ( $arr as $k=>$TRowResult  ) {
$values = $TRowResult->columns;
asort( $values );
foreach ( $values as $k=>$v ) {
        $usr= $v->value;
        $content=$_GET['username'];
    header('Content-type: image/jpg');
        echo $usr;
}

}

Но я получаю сообщение об ошибке, в котором говорится, что изображение содержит ошибки. Может ли кто-нибудь привести пример в Php? Спасибо.


person Dimitrios Panagopoulos    schedule 14.03.2013    source источник


Ответы (1)


Я думаю, ваша проблема в том, что вы используете $data = addslashes($data); при хранении данных. Нет необходимости заключать символы в кавычки при их сохранении в HBase.

И вы можете получить данные следующим образом:

$values = $TRowResult->columns;
$usr= $values['info:pic']->value;
$content=$_GET['username'];
header('Content-type: image/jpg');
echo $usr;
person starl1ng    schedule 20.03.2013