如何在Django中读取request.payload内容并判断文件名是否存在?
判断multipart请求中是否存在filename字段的正确方式
兄弟,你踩了multipart请求处理的一个常见小坑!看你的request.payload,这是个multipart/form-data类型的请求(专门用来传文件的那种),这种请求里,和文件相关的字段根本不会被放到request.POST里,而是存在专门的request.FILES对象里,所以你用if "filename" in request.POST肯定查不到。
给你两种靠谱的实现方式:
先检查文件字段是否存在:
你的表单里文件字段的name是filename,直接去request.FILES里查这个键就行:if 'filename' in request.FILES: # 说明存在这个文件字段,还能进一步拿到上传的文件名 uploaded_file = request.FILES['filename'] print(uploaded_file.name) # 这里会输出你payload里的abc.pdf如果要确认文件是否有有效文件名:
有时候可能字段存在但用户没选文件,这时候可以再加一层判断:if 'filename' in request.FILES and request.FILES['filename'].name: # 存在filename字段,且上传的文件有合法文件名 pass
补充一句:如果是用Flask这类框架,逻辑也差不多,换成request.files.get('filename')来检查就行,但从你用request.POST的写法来看,应该是Django环境对吧?
内容的提问来源于stack exchange,提问作者user2715898
相关产品推荐
相关产品推荐

