我的 Web 应用程序具有以下结构:
我有一个带有 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="...
Run Code Online (Sandbox Code Playgroud)
我会将 Django 模型中的文件保存到 models.FileField 并将字节对象转换为 m3u 文件。你怎么做?
koc*_*hul 11
models.FileField( models.ImageField) 需要django.core.files.base.File像对象 ex)
django.core.files.images.ImageFile
django.core.files.base.ContentFile
ImageFile或ContentFile需要两个参数。
IO 对象:具有seek()方法 (ex) io.BytesIO)。
姓名:str。(重要!没有名字,它不会工作)。
bytes 对象没有 IO 的方法(例如)seek())。它应该转换为 IO 对象。
模型.py
class Message(models.Model):
image = models.ImageField(upload_to='message_image/%Y/%m', null=True)
Run Code Online (Sandbox Code Playgroud)
views.py 或 consumer.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)
Run Code Online (Sandbox Code Playgroud)
你可以试试:
from django.core.files.base import ContentFile
import base64
file_data = ContentFile(base64.b64decode(fileData))
object.file.save(file_name, file_data)
Run Code Online (Sandbox Code Playgroud)
您可以使用带有 .m3u 扩展名的 file_name,您将拥有它。
| 归档时间: |
|
| 查看次数: |
7897 次 |
| 最近记录: |