Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

247
Visualizações
La creación de un archivo Django desde PNG local genera UnicodeDecodeError

Estoy trabajando en una aplicación web de Django que permite a los usuarios cargar presentaciones. La presentación debe convertirse en imágenes, una para cada diapositiva, y las imágenes deben guardarse en un ImageField como parte de un modelo. Sin embargo, cuando trato de guardar la imagen local en el modelo, Django lanza un UnicodeDecodeError en el encabezado del archivo de imagen.

UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte

Leí un poco y descubrí que esto es parte del encabezado válido para un archivo de imagen PNG. Parece que, por alguna razón, Django está intentando decodificar el archivo binario como Unicode.

Aquí está el modelo en el que estoy intentando guardar la imagen:

 class PresentationSlide(models.Model): ... image = models.ImageField(upload_to=upload_to)

La función upload_to guarda los archivos cargados con un UUID codificado en base64.

En una vista, valido el formulario, obtengo el archivo de presentación y uso una biblioteca personalizada para convertirlo en imágenes individuales en un directorio temporal. La idea entonces es crear una instancia de PresentationSlide para cada una de estas imágenes.

A continuación se muestra cómo intento crear las instancias del modelo y guardar las imágenes.

 presentation = Presentation.objects.create( description=form.cleaned_data['description']) slides = [PresentationSlide.objects.create( presentation=presentation, order=order, duration=form.cleaned_data['slide_interval']) for order, image in enumerate(slide_images)] for image_path, slide in zip(sorted(slide_images), slides): with open(image_path) as image: slide.image.save(image.name, File(image))

¿Qué está causando que Django intente decodificar este archivo binario como texto Unicode?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Asegúrese de abrir el descriptor de archivo en modo binario.

 for image_path, slide in zip(sorted(slide_images), slides): with open(image_path, mode='rb') as image: slide.image.save(image.name, File(image))

Por defecto, open devolverá un TextIOWrapper que intenta interpretar el texto.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda