我的 Web 应用程序具有以下结构:
- 使用 Django 做后端
- 前端使用 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 文件。 你是怎么做到的?
请您参考如下方法:
models.FileField(models.ImageField) 需要django.core.files.base.File类对象 例如)django.core.files.base.Filedjango.core.files.images.ImageFile
File或ImageFile需要两个参数。IO 对象:具有
seek()方法(例如)io.BytesIO)。名称:
str。 (重要!没有名字,它将不起作用)。
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)
