2011-05-11 24 views
26

Quiero insertar un archivo en la base de datos MYSQL que reside en un servidor web remoto utilizando un servicio web.¿Cómo insertar un archivo en la base de datos MySQL?

Mi pregunta es: ¿Qué tipo de columna de tabla (por ejemplo, varchar, etc.) almacenará un archivo? ¿Y la declaración de inserción será algo diferente en el caso de un archivo?

Respuesta

10

Es necesario utilizar BLOB, no de Tiny, medio, largo, y justo BLOB, al igual que con otros tipos, elegir uno de acuerdo para tus necesidades de talla

TINYBLOB 255 
BLOB 65535 
MEDIUMBLOB 16777215 
LONGBLOB 4294967295 
(in bytes) 

La instrucción de inserción sería bastante normal. Necesita leer el archivo usando fread y luego addslashes.

+0

Gracias por su respuesta. Entonces, cuando creo la declaración de inserción, solo ingreso "abc.pdf" en la parte de valores de la inserción? ¿O necesito hacer algo más? – meetpd

+0

Oh no, insertas el contenido, eso es lo que has leído con fread. –

+0

Gracias de nuevo por la respuesta rápida. Entonces, ¿pueden mostrarme una declaración de ejemplo de inserción, cómo se verá? – meetpd

10

Las otras respuestas le darán una buena idea de cómo lograr lo que usted ha pedido ....

Sin embargo

No hay muchos casos en que esto sea una buena idea. Por lo general, es mejor almacenar solo el nombre de archivo en la base de datos y el archivo en el sistema de archivos.

De esta forma, su base de datos es mucho más pequeña, se puede transportar más fácilmente y, lo que es más importante, es más rápida de realizar copias de seguridad/restaurar.

+1

Estoy de acuerdo con esto por completo. Los sistemas de archivos están diseñados para almacenar y servir archivos; son notablemente buenos en esto. Sin embargo, el Blob siempre está ahí en caso de que haga su trabajo más fácil.Puedo ver algunas configuraciones de alojamiento donde intercalar archivos en una base de datos ahorrará tiempo, esfuerzo e incluso ayuda con la velocidad. –

+0

@ hamlin11 tiene razón si solo se trata de unos pocos archivos. Si es para algún tipo de área de almacenamiento de documentos, hacer esto sería un gran no, no. –

4

Tamaño del archivo por tipo de MySQL:

  • TINYBLOB 255 bytes = 0.000255 Mb
  • BLOB 65535 bytes = 0,0655 Mb
  • MEDIUMBLOB 16777215 bytes = 16.78 Mb
  • LONGBLOB 4294967295 bytes = 4.294,97 Mb = 4.295 Gb
Cuestiones relacionadas