gpt4 book ai didi

python - Django:如何将字节对象保存到 models.FileField?

转载 作者:太空宇宙 更新时间:2023-11-04 00:06:30 25 4
gpt4 key购买 nike

我的 Web 应用程序具有以下结构:

  1. 使用 Django 做后端
  2. 前端使用 React。

我有一个 React 表单。我从客户端表单发送一个文件,然后在我的 Django 应用程序中使用 APIView 接收该文件。

我收到一个 m3u 文件作为字节对象。

b'------WebKitFormBoundaryIaAPDyj9Qrx8DrWA\r\nContent-Disposition: 
form-data; name="upload";
filename="test.m3u"\r\nContent-Type: audio/x-
mpegurl\r\n\r\n#EXTM3U\n#EXTINF:-1 tvg-ID="" tvg-name="...

我会将 Django 模型中的文件保存到 models.FileField 并将字节对象转换为 m3u 文件。你是怎么做到的?

最佳答案

  1. models.FileField(models.ImageField) 需要 django.core.files.base.File 类对象例如)

    • django.core.files.base.File
    • django.core.files.images.ImageFile
  2. FileImageFile 需要两个参数。

    1. IO 对象:具有 seek() 方法(例如)io.BytesIO)。

    2. 名称:str。 (重要!没有名字,它将不起作用)。

  3. bytes 对象没有 IO 的方法(例如)seek())。它应该被转换为 IO 对象。


模型.py

class Message(models.Model):
image = models.ImageField(upload_to='message_image/%Y/%m', null=True)

views.py 或 consumers.py 或 some-where.py

import io
from django.core.files.images import ImageFile
from myapp.models import Message

def create_image_message(image_bytes):
image = ImageFile(io.BytesIO(image_bytes), name='foo.jpg') # << the answer!
new_message = Message.objects.create(image=image)

关于python - Django:如何将字节对象保存到 models.FileField?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53925309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com