es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo guardar un archivo en el sistema de archivos y su ruta en la base de datos usando Python?

Quiero guardar un archivo en el sistema de archivos, actualmente estoy trabajando con Django y proporciona una forma bastante buena de hacerlo:

models.py

class Report(models.Model):
name = models.CharField(max_length=120)
image = models.ImageField(upload_to = ‘charts’, blank=True, null=True)
remarks = models.TextField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
author = models.ForeignKey(Profile, on_delete=models.PROTECT)

utils.py (este archivo es creado por mí):

import base64, uuid
from django.core.files.base import ContentFile

def get_report_image(data):
f, str_img = data.split(‘;base64, ‘)
decoded_img = base64.b64decode(str_img)
img_name = str(uuid.uuid4())[:12] + ‘.png’
data = ContentFile(decoded_img, name=img_name)
return data

Y para guardar estos datos en la base de datos uso Django ORM

Report.object.create(name=”report name”, remarks=’Report Remarks’, author=request.user.id, image=get_report_image(base64_encoded_image))

Pero quiero hacer lo mismo sin Django

Lo siento por cualquier error que haya cometido al hacer la pregunta o al explicar mi problema, soy un principiante.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Si deseas guardar un archivo en el sistema de archivos sin utilizar Django, puedes usar la función integrada de Python open para abrir un archivo y escribir en él. Aquí tienes un ejemplo:

    import base64
    import uuid
    
    def save_to_file_system(data):
        f, str_img = data.split(';base64, ')
        decoded_img = base64.b64decode(str_img)
        img_name = str(uuid.uuid4())[:12] + '.png'
    
        with open(img_name, 'wb') as f:
            f.write(decoded_img)
    

    En este ejemplo, la función save_to_file_system acepta los datos de la imagen codificados en base64 y los decodifica. Después, genera un nombre de archivo único y escribe los datos de la imagen decodificada en un archivo con ese nombre.

    También puedes modificar este código para guardar el archivo en un directorio específico o utilizar un formato o extensión de archivo diferente, según tus necesidades.

Comments are closed.