首页 > 解决方案 > 如何将文件作为表单字段输入而不将其定义为 Django 中的模型?

问题描述

我通过我们的供应商使用该FastAPI框架发送的 ZIP 文件编写了一个简单的税务分析 API。(如下所示)。但是,由于某些技术原因,我不得不开始将我的 API 转移到 Django。我一直在寻找一种在 Django 中将文件作为表单数据输入的方法,但是所有这些都需要为此创建一个模型,但是,根据我的要求,我不需要将该文件永久存储在任何地方,只是暂时在内存中以供进一步分析。下面是我如何通过 FastAPI 将文件作为输入的示例。

@app.get('/xtracap_gst/files')
async def gst(file: UploadFile = File(any))

任何输入将不胜感激

编辑

我已经设法将文件上传到我的内存中,但它返回一个 MultiValueDictionary 并且根据文档,它由 request.FILES 的 UploadedFile 类进一步处理。但是,在运行 UploadedFile.read() 时,它会说TypeError: 'property' object is not callable. 请在下面找到我的代码:

@api_view (['GET','POST'])
def gstAnalysis(request):
    if request.method == 'POST':
        parser_classes = (FileUploadParser,)
        file = request.FILES
        file =  UploadedFile.read()
        print(file)
        return Response({'test'})
    else:
        return Response({'Test'}) 

标签: pythondjangoapi

解决方案


我无法测试它,但...

你应该得到字典request.FILES(即使你发送一个文件),字典中的每个元素都是一个对象,UploadedFile它来自. 并且有方法keyname<input name=...>UploadedFile.read()

  for name, uploaded_file in request.FILES.items(): 
      print( name )    
      print( uploaded_file.read() ) 

推荐阅读