Tengo un campo varbinary (MAX) en una base de datos de SQL Server 2005. Estoy intentando descubrir cómo insertar datos binarios (es decir, una imagen) en ese campo usando PHP. Estoy usando ODBC para la conexión a la base de datos de SQL Server. He visto una serie de ejemplos que explican esto para usar con una base de datos MySql pero no he podido hacer que funcione con SQL Server. Gracias.Insertar datos binarios en SQL Server usando PHP
Respuesta
La respuesta simple es: detén lo que estás haciendo.
No desea almacenar archivos binarios dentro de una base de datos a menos que tenga algunos problemas de seguridad muy específicos. En su lugar, desea almacenar sus nombres de archivo (posiblemente cambiar el nombre de los archivos para evitar conflictos) y luego almacenarlos en la base de datos. Si la seguridad es un problema, colóquelos en una carpeta no web y use su código para recuperar el archivo y solo sirva el archivo si el usuario tiene acceso a él.
Almacenar imágenes o archivos dentro de una base de datos es un desperdicio de espacio de archivos, un mal uso de las bases de datos y no dejar que las cosas hagan lo que mejor hacen; el sistema de archivos conoce los archivos, la base de datos conoce los datos.
function prepareImageDBString($filepath)
{
$out = 'null';
$handle = @fopen($filepath, 'rb');
if ($handle)
{
$content = @fread($handle, filesize($filepath));
$content = bin2hex($content);
@fclose($handle);
$out = "0x".$content;
}
return $out;
}
uso:
$out = prepareImageDBString('/img/myimg.png');
mssql_query("INSERT INTO MyTable(MyImage) VALUES($out) ");
MyImage es el campo de SQL Server en el que el tipo es imagen
Definite +1. Esto debe ser elegido answear. Hay muchos casos en los que se justifica el uso de Blob (es más fácil hacer una copia de seguridad de 1 archivo de base de datos, en lugar de 10 millones de archivos realmente pequeños, por ejemplo). Solo una observación: la función no tiene retorno al final. –
No voy a decir que es una mala práctica, depende de lo grande que es la imagen y cómo tu aplicación lo usa.
Si el archivo por debajo de 256K de tamaño, almacenar en db es más eficiente; Se recomienda más de 1 mb, almacenar en el sistema de archivos.
- 1. Cómo insertar datos binarios en MSSQL usando PDO
- 2. SQL Server: String o datos binarios sería truncada
- 3. Insertar datos binarios en MySQL (sin PreparedStatement)
- 4. PHP- insertando datos binarios en mysql usando declaraciones preparadas
- 5. Insertar GUID en SQL Server
- 6. Insertar valores de variables en SQL Server usando Java
- 7. Código para insertar datos en la base de datos de SQL Server usando la biblioteca Enterprise
- 8. ¿Cómo puedo insertar datos en SQL Server utilizando VBNet
- 9. Problema al insertar múltiples valores usando SQL Server 2000
- 10. Insertar valores múltiples usando INSERT INTO (SQL Server 2005)
- 11. Obteniendo datos binarios usando SqlDataReader
- 12. Usando una base de datos .MDF SQL Server con ASP.NET versus usando SQL Server
- 13. Base de datos SQL Azure usando SQL Server Management Studio
- 14. ¿Cómo insertar datos binarios en la base de datos sqlite3 en bash?
- 15. VarBinary vs Image SQL Server ¿Tipo de datos para almacenar datos binarios?
- 16. SQL Server gatillo conmutador Insertar, eliminar, actualizar
- 17. almacenamiento de datos binarios en mysql
- 18. Insertar varias filas en la tabla en SQL Server
- 19. PHP: Insertar la marca de tiempo actual en SQL Server 2005
- 20. PHP MySQL SQL parser (INSERTAR y ACTUALIZAR)
- 21. Insertar varias filas en SQL Server desde Java
- 22. Descargando datos binarios usando XMLHttpRequest, sin overrideMimeType
- 23. Insertar columna entre otras columnas en SQL Server usando la secuencia de comandos
- 24. Cómo insertar una clave externa usando un Sub-SELECT en SQL Server
- 25. Insertar números delimitados específicos en una columna en SQL Server
- 26. ASP.Net SessionState usando SQL Server - ¿Están cifrados los datos?
- 27. MapReduce usando SQL Server como fuente de datos
- 28. Cómo insertar datos XML en la tabla en SQL Server 2005
- 29. ¿Cómo puedo INSERTAR datos en dos tablas simultáneamente en SQL Server?
- 30. Pivot usando SQL Server 2000
¿qué pasa con una cadena de texto gzdeflated? Los datos binarios de texto comprimido parecen estar en casa en una base de datos. – chiliNUT
No preguntó SI debería, preguntó cómo podía hacerlo. Debe responder la pregunta del OP; luego, si es necesario, agregue sus pensamientos/opiniones. – Losbear
Si bien este es un buen consejo, no ayuda a las personas que buscan problemas similares a Google en busca de una solución. No todos los datos binarios son imágenes o archivos. – dmarra