Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia.
Pessoal, existe uma maneira de ao fazer o upload do arquivo ele ser salvo dentro de um campo IMAGE do SQL Server? No caso precisamos permitir que o usuário envie qualquer tipo e tamanho de arquivo, mas ele precisa ser salvo no banco de dados, isso porque tem outros sistemas que já inserem e lêem esses arquivos.
>
É possível. Basta pegar o binário do arquivo com fread, por exemplo.
Mas saiba que isso pesa o BD. O ideal seria salvar só o path da imagem no BD e manter o arquivo no sistema de arquivos
Já tentamos usando o fread, mas sem sucesso. Por acaso tem algum exemplo disponível?
Sem problemas quanto ao BD.
não tenho exemplos.
lembro de um tópico recente onde um usuário fazia isso num SGBD Firebird.
O que ocorreu ao usar fread? Houve erro no cadastro ou na visualização?
Ele não salvou no banco, deu erro no momento de abrir o arquivo.
descreva melhor os problemas. Poste mensagens de erro.
Sem elas fica difícil ajudar.
Veja o teste que fiz:
$img = '/home/beraldo/Imagens/125374562981.jpg';
header( 'content-type: image/jpeg' );
echo file_get_contents( $img );
Isso exibe a imagem na tela
o que você precisa é salvar o retorno de file_get_contents no banco e depois exibir na tela, dando echo, depois de definir o header corretamente
$tamanho = GetImageSize($diretorioArquivo);
$mime = $tamanho['mime'];
$arqInsert = file_get_contents($diretorioArquivo);
header("Content-type: $mime");
header("Content-Length: ".strlen($arqInsert));
Erro:
Warning: mssql_query() [function.mssql-query]: message: Unclosed quotation mark after the character string 'PK'. (severity 15) in C:\Arquivos de programas\AppServ\www\manutec\inc\funcao.php on line 4
Warning: mssql_query() [function.mssql-query]: message: Incorrect syntax near 'PK'. (severity 15) in C:\Arquivos de programas\AppServ\www\manutec\inc\funcao.php on line 4
Warning: mssql_query() [function.mssql-query]: Query failed in C:\Arquivos de programas\AppServ\www\manutec\inc\funcao.php on line 4
Erro no Banco de Dados
Ocorreu um erro no banco de dados durante a execução da query: INSERT INTO TAREFAFIGURA (NUTAREFAFIGURA, FGFIGURA) VALUES (4, 'PK
Não coloquei todo o erro pois é gigante.
os erros são do PHP, mas referentes à query do SQL Server, que não está no código acima
Use addslashes(). Provavelmente antes do PK foi gerado um caractere especial que fechou a string de consulta e gerou o erro
Dica: Crie a string de consulta e dê um echo nela para ver na tela como está sendo enviada a query ao SGBD
Fiz um teste com arquivo .txt e envia certinho, consigo abrir depois, tudo certo.
Mas os outros formatos não funciona, sempre da erro no insert, mesmo colocando o addslashes(). Em arquivos de imagem apresenta o erro "A imagem contém erros e não pode ser exibida."
Pelo visto não tem como fazer, vou procurar outra solução para isso.
é possível sim. Não conheço SQL Server, mas deve ter um tipo de campo para isso.
Use esta função para exibir o erro gerado pelo SGBD:
http://www.php.net/manual/en/function.mssql-get-last-message.php
Já uso o comando para exibir o último erro, nele aparece: Incorrect syntax near 'PK'.
e onde está o "PK" na consulta?
dê um echo nela e veja como está sendo enviada ao BD
Esse PK vem na viriável $arqInsert quando é atribuído por file_get_contents
É possível. Basta pegar o binário do arquivo com fread, por exemplo.
Mas saiba que isso pesa o BD. O ideal seria salvar só o path da imagem no BD e manter o arquivo no sistema de arquivos