Campo Anexo - Erro - Urgente (RESOLVIDO)

Criei um formulário que tem um campo do tipo Documento (banco de dados) e no banco mysql coloquei o tipo BLOB.

O arquivo vai normalmente, o problema é que ao tentar abrir o arquivo, após ele está cadastrado, não consigo

No caso de arquivos PDF, aparece uma folha em branco e arquivos compactados aparece a seguinte mensagem:

7-Zip [64] 9.20 Copyright © 1999-2010 Igor Pavlov 2010-11-18
p7zip Version 9.20 (locale=pt_BR.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)

Error: /home/guto/Área de Trabalho/docs_basica.zip: Can not open file as archive

Errors: 1

Alguém por favor sabe o que pode estar acotecendo?

Se for direto na pasta o arquivo esta la?

No banco de dados os dados do arquivo estãono campo Blob?

O Apache tem permissão de gravar na pasta em configurada: /home/guto/Área de Trabalho ?

Na verdade eu ainda não sei ao certo, mas acredito que o problema é no tipo de dados no mysql. Como BLOB o limite de tamanho de arquivo fica limitado a 64KB, ou seja, arquivos maiores, gravam, porém ficam corrompidos. Mudei para LONGBLOB e parece que resolveu… não tenho certeza plena disso. Alguém tem certeza?

No scriptcase criei o campo do tipo Documento, sem mandar para pasta, somente gravando em banco de dados.

Pode ser isso sim.
Criou um campo para guardar o nome do arquivo?

Sim criei… o campo do tamanho do arquivo eu não criei… tem problema?

o tamanho não eh obrigatório.

Verifique a permissão da pasta.

Como é gravado em binário no banco, é enviado para um pasta temp no servidor, está com a permissão ok. Acredito que o problema é o tipo de dados no banco mesmo.

Agora o que tá acontecendo é o seguinte: Após anexar um arquivo, processar e salvar… se clicar no link do arquivo, por exemplo, um pdf, abre um arquivo em branco.

Só abre o arquivo corretamente se eu sair do formulário e entrar novamente.
Isso é assim mesmo? Seria um bug do scriptcase? To utilizando o scriptcase 6.

Grato!

Olá,
Isso aconteceu comigo a um tempo atrás. Eu estava subindo arquivos e ficava apenas um arquivo em branco.
Mesmo sendo um campo BLOB é necessário que antes de subir o arquivo você remova todos os espaços e caracteres especiais.
Por Exemplo: o Arquivo chama-se Provão da Prefeitura de Itú.pdf

Ao Subir o arquivo deve ficar: ProvaodaPrefeituradeItu.pdf

No Evento OnBeforeInsert e no OnAfterUpdate coloque esse código:

$nomeArquivo = {nom_arq};

$varnomeArquivo = str_replace(" ", “”, $nomeArquivo);

$ACENTOS = array(“À”,“Á”,“”,“Ô,“à”,“á”,“â”,“ã”);
$SEMACENTOS= array(“A”,“A”,“A”,“A”,“a”,“a”,“a”,“a”);
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);

$ACENTOS = array(“È”,“É”,“Ê”,“Ë”,“è”,“é”,“ê”,“ë”);
$SEMACENTOS= array(“E”,“E”,“E”,“E”,“e”,“e”,“e”,“e”);
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);

$ACENTOS = array(“í”,“Í”);
$SEMACENTOS= array(“i”,“I”);
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);

$ACENTOS = array(“ó”,“Ó”);
$SEMACENTOS= array(“o”,“O”);
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);

$ACENTOS = array(“ú”,“Ú”);
$SEMACENTOS= array(“u”,“U”);
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);

$ACENTOS = array(“ç”,“Ç”);
$SEMACENTOS= array(“c”,“C”);
$varnomeArquivo=str_replace($ACENTOS,$SEMACENTOS, $varnomeArquivo);

{nom_arq} = $varnomeArquivo;

Caso desejar validar o tamanho do arquivo, coloque o código abaixo no OnValidate

if ({bin_arq} <> “”)
{
$tam = mb_strlen({bin_arq}) / 1024;
if ($tam > 200)
{
sc_error_message(“o Arquivo não pode ser maior do que 200 kb”);
}
}

Espero ter ajudado.

Abraços!

Testei o script, no caso ele muda o nome do arquivo no campo que contém o nome do arquivo… O link para download continua com os espaços e demais caracteres especiais… é isso mesmo?

Depois que você salvar o arquivo os espaços não continuam no link, visto que o link é composto exclusivamente pelo nome do arquivo.

Obrigado, funcionou o script direitinho. Entretanto, os arquivos não abrem (corrompidos), somente se eu sair do form e entrar novamente é que eles abrem (fazem download e abrem normalmente). Os espaços e caracteres especiais também aparecem no link, após sair do form e entrar novamente, ai sim eles somem.

Esse form tá dentro de uma aplicação de abas… teria como realizar um reload pra corrigir isso? Ou seja, sem precisar que o usuário saia e entre novamente no form?

Observação: No meu caso, o registro já existe previamente e é único, ou seja, não fiz no evento insert. Apenas no BeforeUpdate, no AfterUpdate não funcionou.

Resolvi o problema do reload colocando uma mensagem na opção Aplicação->Navegação->Mensagem após atualização.

Muito obrigado a todos!

Boa tarde gutoribeiro/inosys/comunidade ScriptCase,

estou gravando o arquivo no banco de dados pois possui dados médicos confidenciais e pelo que vi esta seria a alternativa mais segura, pois implicaria em poder acessar ao banco de dados.

Entretanto também estou precisando que o arquivo seja visualizado no navegador, alguém conseguiu resolver isto?

Verifiquei uma biblioteca em ajav, javascript chamada Bumpbox que faria exatamente o que eu estou precisando, mas não achei como configurá-la no scriptcase.

Alguém poderia me ajudar?