Python Flask request.files始终为空

Python Flask request.files始终为空,python,flask,flask-restful,angular8,Python,Flask,Flask Restful,Angular8,我发出一个POST请求,发送一个JSON对象,其中包含包含文件的键。我发送到后端的一个示例是: export interface PosInputFiles { org: string; year_month: string; in_master_file: File; iv_file?: File; sales_file?: File; recv_file?: File; transfer_file?: File; adjust_file?: File; pcount_file?: File;

我发出一个POST请求,发送一个JSON对象,其中包含包含文件的键。我发送到后端的一个示例是:

export interface PosInputFiles {
org: string;
year_month: string;
in_master_file: File;
iv_file?: File;
sales_file?: File;
recv_file?: File;
transfer_file?: File;
adjust_file?: File;
pcount_file?: File;
gift_file?: File;
xrate?: string;
}

我的POST请求如下所示:

  generateMaster(args: PosInputFiles) {
return this.http.post('http://localhost:5000/api', args, { headers: this.headers});
}

当我尝试从request.json访问这些文件时,值是一个空的dict({})


然后我尝试只发送一个文件,并通过POSTMan和我的前端(Angular8)确保len(request.json)==0。然而,len(request.files)也是0,每次我尝试访问某个内容时,都会出现400个错误。我的POST请求是成功的,因为我总是打印{“POST”,“success”},但由于某些原因,没有任何文件可以发送到后端。我发送的所有文件都是真实文件,我已确保我正在发送该文件。非常感谢你的帮助

对于那些最终可能会遇到同样问题的人,下面是我如何解决这个问题的。Flask无法识别非FormData类型的文件,所以我只能访问JSON。因此,我必须将所有文件附加到FormData变量

generateMaster(submittedFiles: PosInputFiles) {
const formData: FormData = new FormData();
Object.keys(submittedFiles).forEach(key => {
  if (submittedFiles[key] instanceof File) {
    formData.append(key, submittedFiles[key], submittedFiles[key].name);
  } else {
    formData.append(key, new File([], submittedFiles[key]), submittedFiles[key].name);
  }
})
return this.http.post('http://localhost:5000/api', formData, { headers: this.headers});
}

然后后端将最终识别这些文件。为了获取其他字符串数据和浮动,我将这些值存储为文件名,并可以访问它们

 def post(self):
    # Initilize arguments
    org = request.files.get('org').filename
    year_month = request.files.get('year_month').filename
    in_master_file = request.files.get('in_master_file')
    iv_file = request.files.get('iv_file')
    sales_file = request.files.get('sales_file')
    ...
    xrate = None if 'xrate' not in request.files else float(request.files.get('xrate').filename)

有些人甚至不会点击你的图片,如果你想得到更多的关注,你需要把实际的代码,并正确格式化。明白了,谢谢你的建议。我已经更新了我的问题。如果仍然不正确,请告诉我。
 def post(self):
    # Initilize arguments
    org = request.files.get('org').filename
    year_month = request.files.get('year_month').filename
    in_master_file = request.files.get('in_master_file')
    iv_file = request.files.get('iv_file')
    sales_file = request.files.get('sales_file')
    ...
    xrate = None if 'xrate' not in request.files else float(request.files.get('xrate').filename)