Цитата:
Сообщение от MainCraft
Я мало что ещё понимаю в Flex-e, но мне кажется в вашем случае удобнее было бы удобнее заранее подготовить данные на стороне PHP.
|
Вот встает вопрос - как их правильно подготовить? Я понимаю, что поле BLOB надо через поток читать. Т.е. создавать потоковый буффер, указатель на этот буффер как-то сообщить Flex-у, а там правильно загрузить поток в компонент.
Вопрос в том - КАК?
По крайней мере в случае с текстом в Firebird/Borland Interbase, решение нашлось: оно и лежало в описании PHP.
Для чтения BLOB поля

PHP код:
$res = ibase_execute($stmt);
$this->throwExceptionOnError();
$rows = array();
while ($row = ibase_fetch_object($res)) {
//Getting end recoding BLOB
if(sizeof($row->COMMENT)){
$blobinfo = ibase_blob_info($row->COMMENT);
$blobhandle = ibase_blob_open($row->COMMENT);
$commentblob = NULL;
for($i = 0; $i < $blobinfo[1]; $i++){
$readsize = $blobinfo[2];
if($i == ($blobinfo[1] - 1)){
$readsize = $blobinfo[0] - (($blobinfo[1] - 1) * $blobinfo[2]);
}
$commentblob .= ibase_blob_get($blobhandle, $readsize);
}
ibase_blob_close($blobhandle);
$row->COMMENT = ($commentblob);
}
$rows[] = $row;
}
ibase_free_query($stmt);
$this->Disconnect();
return $rows;
}
Flash Builder на своем уровне поле COMMENT распознает как текстовое. Совершенно спокойно отображает в соответствующем компоненте.
Для записи (Insert, Update):

PHP код:
$blh = ibase_blob_create($this->connection);
ibase_blob_add($blh, $item->COMMENT);
$blobid = ibase_blob_close($blh);
$res = ibase_execute($stmt, $item->CLASSNAME, $blobid);