gpt4 book ai didi

django - 在 Django rest 框架中上传视频

转载 作者:行者123 更新时间:2023-12-05 04:39:58 25 4
gpt4 key购买 nike

我创建了一个 post api,可以为博客上传图片和视频。我可以处理多个图像,这不是问题。但我也必须从前端发送视频。我已经将 Filefield 用于视频。我不是 api 专家,但我认为,由于我编写的代码是同步的,所以我编写的所有内容都将同时完成。现在的问题是,如果用户想要上传一个非常大的视频,例如 200-500 mb,那么 post api 调用响应将非常长。有什么办法可以先保存博文,返回响应,然后开始将视频上传到实时服务器的数据库中。

我的模型:

class Blogposts(models.Model):  

blog_title = models.CharField(max_length=100blank=True)

video = models.FileField(upload_to="media",
null= True)

我尝试使用 django 信号,但是 django 信号也是同步的。我不确定上面所说的一切也可能是错误的。但是如何解决这个问题?或者我应该使用 django celery ??

最佳答案

DRF 已经有了部分更新。用那个。意思是,您仅对非文件字段发出发布请求。将视频字段设为空白 true null tr​​ue。

成功完成后,您将返回帖子的 ID 作为响应。然后发出补丁请求以上传文件。

您的 javascript 算法大致如下所示

const handleFormSubmit => (data) {
file = data.video_file;
delete data.video_file;
axios.post('/blogs/', data).then(response => {
updateUiShowCreatedBlogWithVideoUploading();

id = response.id;
fileUploadRequestData = {
file: file
}
axios.patch('/blogs/${id}/', file).then(response => {
updateUiShowCreatedBlogWithVideoUploaded();
});
});
}

但一般来说,对于大文件,我会直接从浏览器将其上传到对象存储(如 S3),而不会打扰 django 进程。完成后,像在补丁中一样附加对象。在这种情况下,您的模型将只是一个 URL 字段,而不是 FileField。

如果这太多了,至少使用 django-storages 并让库处理从后端上传到 S3。

关于django - 在 Django rest 框架中上传视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70364953/

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