Frage

Ich versuche, in einer Datenbank eine Möglichkeit zum Speichern von Dateien, um herauszufinden. Ich weiß, es zu speichern Dateien auf dem Dateisystem empfohlen wird, anstatt die Datenbank, aber die Arbeit, die ich auf mich arbeiten würde sehr es vorziehen, die Datenbank mit Hilfe dieser Bilder speichern (Dateien).

Es gibt auch einige Einschränkungen. Ich bin kein Admin-Benutzer, und ich habe, um gespeicherte Prozeduren machen alle Befehle auszuführen. Dies ist bisher nicht viel Mühe, aber ich kann nicht für das Leben von mir nicht eine Möglichkeit zum Speichern einer Datei (Bild) in der Datenbank aufzubauen.

Wenn ich versuche, den BULK-Befehl zu verwenden, erhalte ich eine Fehlermeldung, dass „Sie haben keine Berechtigung, die Bulk-Load-Anweisung zu verwenden.“ Der Groß Dienstprogramm schien wie die einfache Möglichkeit, Dateien in die Datenbank zu laden, aber ohne Berechtigungen Ich habe eine Arbeit-a-round Figur.

Ich beschloss, ein HTML-Formular mit einem Datei-Upload-Eingabetyp zu verwenden und es mit PHP umgehen. Die PHP ruft die gespeicherte Prozedur und übergibt den Inhalt der Datei. Das Problem ist, dass es jetzt sagt, dass die maximale Länge eines Parameters nur 128 Zeichen lang sein.

Jetzt bin ich ganz fest. Ich habe keine Berechtigungen für den Bulk-Befehl zu verwenden, und es scheint, dass die maximale Länge eines Parameters, dass ich an die SP passieren können 128 Zeichen ist.

ich erwartet hatte Probleme zu laufen, weil binäre Zeichen und ASCII-Zeichen nicht gut zusammen mischen, aber ich bin in einer Sackgasse ...

Danke

War es hilfreich?

Lösung

Hier ist ein Beispiel, das ich gefunden habe in David Hayden Blog.

Es ist ein c # -Beispiel, aber die Schritte sollten in PHP ähnlich sein:

  1. Konvertieren Sie Ihre hochgeladene Datei in einem Byte-Array
  2. Ausführen dynamische TSQL auf dem Server

Andere Tipps

Im Allgemeinen wir nicht passieren binäre Daten in SQL. Wir laden Sie die Datei auf den Server, dann vom Server in die Datenbank das Bild geladen werden.

Laden Sie das Bild in die Datenbank aus einer Datei:

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

Holen Sie sich das Bild zurück in eine Datei:

SELECT image
INTO DUMPFILE 'images/myimage.jpg'
FROM images
WHERE image_id = 1234
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top