如何在InMemoryUploadedFile django中上传文件

时间:2019-03-15 22:31:05

标签: python django in-memory-database filefield

我正在django 2.1中开发一个应用程序,在该应用程序中,我必须通过模态上传数量不确定的音频,然后将信息传递给启动模态的视图。 但是,在填写主视图表单之前,不应将这些音频存储在数据库中。然后我想到了这些解决方案:

首先,我考虑过将其保存为会话属性,但是FileField的内容不是JSON可序列化的,这是行不通的。

第二,我想到了LocalStorage属性,但是如果文件超过大小,我将遇到问题。

第三,我考虑过要获取文件路径,然后创建音频,但是由于我正在阅读,这是一种不好的做法,只有在磁盘上创建了文件(即,文件位于TemporaryUploadedFile中但我的文件中)时才能获取重量应少于1MB

我可以选择将所有小于2.5MB的文件都存储在InMemoryUploadedFile中,但是我不知道如何获取它们。有谁知道这是怎么做的?还是我还可以保存临时音频列表?

2 个答案:

答案 0 :(得分:0)

InMemoryUploadedFile 是文件对象的包装。您可以使用 file 属性访问文件对象。

file_in_memory # <InMemoryUploadedFile: xxx (xxx/xxx)>
file_object = file_in_memory.file

答案 1 :(得分:0)

客户端:

        var file = document.getElementById('file');
        const formData = new FormData();
        formData.append('file', file[0]);

        fetch('api/upload_file/',{
            method:'POST',
            body:formData
            
        }).then(res => console.log(res);
        .catch(error => console.log(error);

在服务器端:
InMemoryUploadedFile 可以通过以下方式访问:

file = request.FILES.get('file')