Question

Je suis en train de trouver un moyen de stocker des fichiers dans une base de données. Je sais qu'il est recommandé de stocker des fichiers sur le système de fichiers plutôt que la base de données, mais le travail que je travaille sur préférerais fortement d'utiliser la base de données pour stocker ces images (fichiers).

Il y a aussi quelques contraintes. Je ne suis pas un utilisateur admin, et je dois faire des procédures stockées pour exécuter toutes les commandes. Cela n'a pas été d'une grande difficulté à ce jour, mais je ne peux pas pour la vie de me mettre en place un moyen de stocker un fichier (image) dans la base de données.

Lorsque je tente d'utiliser la commande VRAC, je reçois une erreur disant: « Vous n'êtes pas autorisé à utiliser l'instruction de charge en vrac. » L'utilitaire en vrac semblait être le moyen facile de télécharger des fichiers à la base de données, mais sans autorisations je dois comprendre un travail d'un tour.

J'ai décidé d'utiliser un formulaire HTML avec un type d'entrée de téléchargement de fichiers et de gérer avec PHP. Le PHP appelle la procédure stockée et passe dans le contenu du fichier. Le problème est que maintenant il dit que la longueur maximale d'un paramètre ne peut être 128 caractères.

Maintenant, je suis complètement bloqué. Je ne dispose pas des autorisations d'utiliser la commande en vrac et il semble que la longueur maximale d'un paramètre que je peux passer à la SP est de 128 caractères.

Je pensais rencontrer des problèmes parce que les caractères binaires et caractères ascii ne se mélangent pas bien ensemble, mais je suis dans une impasse ...

Merci

Était-ce utile?

La solution

Voici un exemple que j'ai trouvé dans le blog de David Hayden.

Il est un exemple c #, mais les étapes devrait être similaire en PHP:

  1. Convertir votre fichier téléchargé sur un tableau d'octets
  2. Exécuter TSQL dynamique sur le serveur

Autres conseils

En général, on ne passe pas de données binaires dans SQL. Nous télécharger le fichier sur le serveur, puis charger l'image du serveur dans la base de données.

charger l'image dans la base de données à partir d'un fichier:

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

Obtenir l'image retour vers un fichier:

SELECT image
INTO DUMPFILE 'images/myimage.jpg'
FROM images
WHERE image_id = 1234
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top