database - programacion - La mejor manera de almacenar archivos cargados por el usuario en una aplicaciĆ³n web
optimizar consultas lentas mysql (2)
Esa es una gran pregunta.
En relación con su caso de uso de imágenes, este es el dominio de un servidor de imágenes que, por lo general, es una parte completa de la aplicación. Manejan el ciclo de vida y el cambio de tamaño de las imágenes (una imagen se almacena / cambia de tamaño a diferentes tamaños). Hasta donde he visto, nunca fue implementado por una columna BLOB de SQL, sino por un archivo normal directo en el disco.
También eche un vistazo a ( ejemplo de infraestructura de Facebook )
En general, el producto tiene que alinearse con sus requisitos concretos (tamaño de archivo, número de archivos, carga). En la mayoría de los casos, realmente no quieres construir todo eso desde cero ... Aunque si tus requisitos son de gama baja (solo unos pocos usuarios suben archivos rara vez) podrías guardar estos archivos en el disco y guardar la ruta como referencia en sus otros datos (por ejemplo, columna en RDBMS).
Estoy creando una aplicación web (en Django), que necesita permitir a los usuarios cargar archivos (específicamente imágenes, que luego se muestran para otros usuarios). Estoy tratando de entender la mejor manera de almacenar estos archivos cargados.
A partir de preguntas relacionadas, vi que algunas personas sugirieron que se le diera al archivo una identificación única generada por el servidor y, a continuación, se creara una tabla de BD que mapea los identificadores con los nombres de archivo originales.
¿Es este el mejor método para almacenar archivos cargados por el usuario, desde un punto de vista de seguridad, eficiencia o desde cualquier otro punto de vista? ¿Qué tipo de información debo guardar sobre cada archivo?
¿Hay alguna otra mejor práctica involucrada con la aceptación de archivos cargados por el usuario? (Además de asegurarse de que realmente sean imágenes y verificar su tamaño, obviamente)?
Editar : un poco más de información sobre lo que necesito. Hablo específicamente de los archivos de imagen que los usuarios deben cargar e incrustar en el contenido que crean. Imagínenlo como una respuesta de StackOverflow (o una publicación de blog): alguien carga una imagen, que debe almacenarse y mostrarse cada vez que alguien más vea la respuesta.
Gracias,
Edan
Nota: Hay varias preguntas relacionadas, pero no he encontrado una que solicite una comparación de formas de almacenar archivos cargados por el usuario.
Su pregunta es demasiado amplia para ser realmente útil; El mejor enfoque dependerá de sus requisitos específicos. Sin embargo...
Los programadores están tentados constantemente de insertar archivos en la base de datos. Resistir. Simplemente agrega una capa de complejidad a todo lo que intenta hacer con ellos a partir de entonces.
Para mi experiencia, mientras usaba un hashkey como el nombre del archivo local era mi preferencia, en realidad no funcionó porque nuestros archivos no estaban restringidos a las imágenes: las imágenes que no necesitan un nombre de archivo para ser devueltas a los usuarios, y los que subieron el video Particularmente me gusta que se renombre radicalmente sus archivos, ya que les imposibilita saber qué archivo es qué.
En cuanto a las imágenes, hay algo de trabajo no trivial que hacer en el reajuste a varios tamaños / miniaturas.