RTF em campo BLOB

Olá Pessoal
Eu tenho uma tabela com um campo LONGBLOB, e neste campo eu gravo um arquivo RTF através de upload. Eu consigo baixar o arquivo no link que o proprio scriptcase cria.

Entretanto eu nao consigo gerar esse arquivo a partir de um método. Isto é, eu gostaria de pegar o modelo RTF que está dentro do camplo BLOB, e gravar esse modelo numa pasta do servidor.

Na verdade o arquivo gerado sempre fica vazio.

A questao é : Como faço para gerar um arquivo RTF a partir de um modelo RTF gravado num campo BLOB ?

Segue o exemplo de código onde eu tento criar o arquivo.

// o campo {documento} é do tipo LONGBLOB, e nele fica armazenado o arquivo MODELO.RTF

$dt = new DateTime();
$version=$dt->getTimestamp();

$conteudo = base64_decode({documento});

$diretorio = $this->Ini->path_doc.’/tmp’;

$nome_arquivo = “arq_”.$version.".rtf";
$fp = fopen($diretorio.’/’.$nome_arquivo,“w”);
fwrite($fp,$conteudo);
fclose($fp);

$url="…/…/…/file/doc/tmp";
$arquivo = $url."/".$nome_arquivo;

{lnk} = “Clique aqui para baixar o arquivo”;

como vc garante que o arquivo foi gravado com base64_encode?

Experimente remover o base64_decode.

E se continuar com erro experimente passar um utf8_encode

Oi Haroldo

Na verdade eu comecei da forma mais simples

$conteudo = {documento};
echo $conteudo; // nao mostra nada

// Assim tambem nao funciona
$conteudo = “{documento}”;
echo $conteudo; // nao mostra nada

// Assim tambem nao funciona
$conteudo = “{documento}”;
echo $conteudo; // nao mostra nada

$conteudo = base64_decode("{documento}"); // nao funciona
$conteudo = base64_decode({documento}); // nao funciona
$conteudo = utf8_decode({documento}); // nao funciona

echo $conteudo; // nao mostra nada

Se eu usar o HEIDISQL para consultar a tabela, eu vejo dentro do campo “documento” o conteudo é esse ai

{\rtf1\ansi\ansicpg1252\deff0\deflang1046{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang9\f0\fs22 asdasdasdasdasda\par
}

Vou colar aqui as imagens das configuracoes dos campos

Acho que isso deve ser semelhante a salvar uma imagem de banco de dados num diretorio antes de manipular o arquivo.
Acho que deveria ser possivel fazer isso com qualquer extensao.
O problema é que eu nao sei como fazer isso.

O procedimento está certo. Só não sabemos se.foi gravado no banco com.addslashes e/ou base64

Estranho é que através do link criado pelo proprio scriptcase o arquivo é baixado corretamente.

Resolvi o problema.
No caso, em vez de usar diretamente o campo {documento}, eu forcei um lookup na tabela.

$sql = “select documento from teste_tabela where id={id}”;
sc_lookup(ds,$sql);
$doc={ds[0][0]};

$diretorio = $this->Ini->path_doc.’/tmp’;
$nome_arquivo = “arq_”.$version.".rtf";
$fp = fopen($diretorio.’/’.$nome_arquivo,“w”);
fwrite($fp,$doc);
fclose($fp);