Domanda

Sto cercando di capire un modo per memorizzare i file in un database. So che si consiglia di archiviare i file sul file system, piuttosto che il database, ma il lavoro che sto lavorando su altamente preferiscono utilizzare il database per memorizzare queste immagini (file).

Ci sono anche alcuni vincoli. Io non sono un utente amministratore, e devo fare le stored procedure per eseguire tutti i comandi. Questo non è stato di molte difficoltà fino ad ora, ma non posso per la vita di me stabilire un modo per memorizzare un file (immagine) nel database.

Quando si tenta di utilizzare il comando BULK, ottengo un errore che dice "Tu non hai il permesso di utilizzare l'istruzione caricamento di massa." L'utilità di massa sembrava il modo più semplice per caricare i file al database, ma senza i permessi devo capire un work-a-round.

Ho deciso di utilizzare un form HTML con un tipo di input upload di file e gestire con PHP. Il PHP chiama la stored procedure e passa il contenuto del file. Il problema è che ora sta dicendo che la lunghezza massima di un parametro può essere solo 128 caratteri.

Ora sono completamente bloccato. Non ho autorizzazioni per utilizzare il comando di massa e sembra che la lunghezza massima di un parametro che posso passare per la SP è di 128 caratteri.

mi aspettavo di incorrere in problemi, perché i caratteri binari e caratteri ASCII non si mescolano bene insieme, ma io sono in un vicolo cieco ...

Grazie

È stato utile?

Soluzione

Ecco un esempio che ho trovato nel blog di David Hayden.

E 'un esempio di C #, ma i passi dovrebbe essere simile in PHP:

  1. Convertire file caricato a un array di byte
  2. Esegui TSQL dinamica sul server

Altri suggerimenti

In generale, non passa i dati binari in SQL. Noi caricare il file sul server, quindi caricare l'immagine dal server nel database.

Caricare l'immagine nel database da un file:

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

Prendi l'immagine di nuovo in un file:

SELECT image
INTO DUMPFILE 'images/myimage.jpg'
FROM images
WHERE image_id = 1234
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top