Показать сообщение отдельно
Старый 19.01.2011, 15:52
sdsfy вне форума Посмотреть профиль Отправить личное сообщение для sdsfy Найти все сообщения от sdsfy
  № 3  
Ответить с цитированием
sdsfy

Регистрация: Oct 2010
Сообщений: 5
Цитата:
Сообщение от 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); 


Последний раз редактировалось sdsfy; 22.01.2011 в 20:57. Причина: Есть решение