【问题标题】:no file on upload to django rest framework上传到 django rest 框架时没有文件
【发布时间】:2019-07-23 14:44:43
【问题描述】:

更新:以下 2 个答案均无效。当我使用 request.FILES["file"] 时,我得到一个关键错误。

使用 django rest 框架我正在尝试上传 pdf 文件,但请求进来了,但没有文件。我正在尝试从 Postman 上传文件。获取请求有效。非常感谢任何帮助。

这是我的看法

@api_view(['PUT','GET'])
def upload_pdf(request):
    if request.method == 'PUT':
        myfile = request.POST.get('file')
        print("myfile === {}".format(myfile))

    if request.method == 'GET':
        return Response({"message": "Hey there at least this works!"})

输出:我的文件 === 无

【问题讨论】:

    标签: django python-3.x django-rest-framework postman


    【解决方案1】:

    问题不在于代码,而在于邮递员。 我不知道如何使用邮递员,也没有人提出任何关于邮递员的建议。 所以我只是用 curl 命令测试了它 这完美无缺...

    curl -XPOST -i -F file=@dir/to/test.pdf http://127.0.0.1:8000/api/upload_pdf  
    

    【讨论】:

      【解决方案2】:

      你可以试试这个

      from rest_framework.parsers import FileUploadParser
      
      class Fileupload(APIView):
         parser_class = (FileUploadParser,)
         def post(self, request, format=None):
           file = request.FILES['file']
           if 'file' not in request.data:
                raise ParseError("Empty content")
           model_obj = YourModel.objects.get_or_create()
      
           model_obj.myfile.save(file.name, file, save=True)
      

      希望对你有帮助

      更多详情请参考this

      【讨论】:

      • 嗨,谢谢,但是 file = request.FILES['file'] 给了我一个关键错误
      • @user3250052 您需要在密钥中传递 file
      • 我确实在密钥中有文件。我从下拉菜单中选择了它。只有将鼠标指针悬停在它上面时才能看到它
      【解决方案3】:

      在 Django 中,所有上传的文件都会以request.FILES 结尾,而不是request.POST。这就是为什么您在帖子数据中看不到该文件的原因。

      【讨论】:

      • 感谢@GwynBleiD file = request.FILES['file'] 给了我一个关键错误
      • 任何其他想法@GwynBleidD?
      猜你喜欢
      • 2015-10-04
      • 2013-12-26
      • 2016-10-25
      • 2016-02-16
      • 2021-09-27
      • 2013-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多