Pregunta

Estoy tratando de encontrar una manera de almacenar archivos en una base de datos. Sé que se recomienda para almacenar archivos en el sistema de archivos en lugar de la base de datos, pero el trabajo que estoy trabajando en encarecidamente prefiere el uso de la base de datos para almacenar estas imágenes (archivos).

También hay algunas limitaciones. No soy un usuario administrador, y tengo que hacer que los procedimientos almacenados para ejecutar todos los comandos. Esto no ha sido de mucha dificultad hasta ahora, pero no puedo por la vida de mí establecer una manera de almacenar un archivo (imagen) en la base de datos.

Cuando intento utilizar el comando GRANEL, me sale un error que dice "Usted no tiene permiso para utilizar la instrucción de carga a granel." La utilidad mayor que parecía ser el camino más fácil para subir archivos a la base de datos, pero sin permisos tengo que averiguar una obra-a-ronda.

decidí usar un formulario HTML con un tipo de entrada de carga de archivos y manejarlo con PHP. El PHP llama al procedimiento almacenado y pasa el contenido del archivo. El problema es que ahora se está diciendo que la longitud máxima de un parámetro sólo puede ser de 128 caracteres.

Ahora estoy completamente atascado. No tiene permisos para utilizar el comando mayor y parece que la longitud máxima de un parámetro que pueda pasar a la SP es de 128 caracteres.

Me esperaba a tener problemas ya que los caracteres binarios y caracteres ASCII no se mezclan bien juntos, pero estoy en un callejón sin salida ...

Gracias

¿Fue útil?

Solución

Este es un ejemplo que he encontrado en el blog de David Hayden.

Es un ejemplo de C #, pero los pasos debe ser similar en PHP:

  1. Convertir el archivo cargado a una matriz de bytes
  2. Ejecutar TSQL dinámica en el servidor

Otros consejos

En general, no nos dejan pasar los datos binarios en SQL. Nos cargar el archivo en el servidor, a continuación, cargar la imagen desde el servidor en la base de datos.

cargar la imagen en la base de datos desde un archivo:

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

Obtener la imagen de vuelta a un archivo:

SELECT image
INTO DUMPFILE 'images/myimage.jpg'
FROM images
WHERE image_id = 1234
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top