My web application has the following structure:
I have a form with React. I send a file from client form and I receive the file in my Django application with an APIView.
I receive a m3u file as bytes object.
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="...
I would save the file in a Django model to a models.FileField and convert bytes object to m3u file. How you do it?
models.FileField
(models.ImageField
) needs django.core.files.base.File
like objects
ex)
django.core.files.images.ImageFile
django.core.files.base.ContentFile
ImageFile
or ContentFile
needs two args.
IO object : which has seek()
method (ex) io.BytesIO
).
name : str
. (important! without name, it will not works).
bytes object doesn't have IO's methods(ex) seek()
). it should be converted to IO object.
models.py
class Message(models.Model):
image = models.ImageField(upload_to='message_image/%Y/%m', null=True)
views.py or consumers.py or 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)
You can try:
from django.core.files.base import ContentFile
import base64
file_data = ContentFile(base64.b64decode(fileData))
object.file.save(file_name, file_data)
You can use your file_name with an .m3u extension, and you shall have it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With