Pergunta

Estou tentando descobrir uma maneira de armazenar arquivos em um banco de dados. Sei que é recomendável armazenar arquivos no sistema de arquivos, em vez do banco de dados, mas o trabalho em que estou trabalhando prefere usar o banco de dados para armazenar essas imagens (arquivos).

Existem também algumas restrições. Não sou um usuário administrador e tenho que fazer procedimentos armazenados para executar todos os comandos. Até agora, isso não foi de muita dificuldade, mas não posso, para a vida de mim, estabelecer uma maneira de armazenar um arquivo (imagem) no banco de dados.

Quando tento usar o comando em massa, recebo um erro dizendo "Você não tem permissão para usar a instrução de carga em massa". O utilitário em massa parecia a maneira mais fácil de fazer upload de arquivos para o banco de dados, mas sem permissões, tenho que descobrir uma rodada de trabalho.

Decidi usar um formulário HTML com um tipo de entrada de upload de arquivo e lidar com PHP. O PHP chama o procedimento armazenado e passa no conteúdo do arquivo. O problema é que agora está dizendo que o comprimento máximo de um parâmetro pode ter apenas 128 caracteres.

Agora estou completamente preso. Não tenho permissões para usar o comando em massa e parece que o comprimento máximo de um parâmetro que posso passar para o SP é de 128 caracteres.

Eu esperava ter problemas porque personagens binários e personagens ASCII não se misturam bem, mas estou em um beco sem saída ...

Obrigado

Foi útil?

Solução

Aqui está um exemplo que encontrei no blog de David Hayden.

É um exemplo AC#, mas as etapas devem ser semelhantes no PHP:

  1. Converta seu arquivo carregado em uma matriz de bytes
  2. Executar o TSQL dinâmico no servidor

Outras dicas

Em geral, não passamos dados binários no SQL. Nós carregamos o arquivo no servidor e, em seguida, carregamos a imagem do servidor no banco de dados.

Carregue a imagem no banco de dados de um arquivo:

UPDATE images
SET image = LOAD_FILE('images/myimage.jpg')
WHERE image_id = 1234

Retire a imagem de volta a um arquivo:

SELECT image
INTO DUMPFILE 'images/myimage.jpg'
FROM images
WHERE image_id = 1234
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top