代码之家  ›  专栏  ›  技术社区  ›  Edgar Navasardyan

如何反序列化base64编码的数据并将其与DRF一起使用

  •  0
  • Edgar Navasardyan  · 技术社区  · 6 年前

    我的目标是找到一个端点来获取base64解码字符串。 这是基于一个例子来描述的

    {
        "encoded_data": "a2F0aWUsIGpvaG5zLCBrYXRpZUBnbWFpbC5jb20KdG9tbXksbGVlLHRvbW15QGdtYWlsLmNvbQ=="
    }
    

    我曾尝试通过以下方式实现它,但最后出现以下错误消息:

    JSON parse error - Expecting value: line 1 column 1 (char 0) 
    

    class UsersFileUpload(APIView):
        #parser_classes = (MultiPartParser,)
    
        def post(self, request):
            stream = base64.b64decode(request.data['encoded_data'])
    
            stream = io.BytesIO(stream)
            data = JSONParser().parse(stream) 
            serializer = UsersSerializer(data=data)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data)
            return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   A. J. Parr    6 年前

    我认为你没有正确地解码文本,你不应该使用 BytesIO

    你应该 decode b64decode

    b64decoded_data = base64.b64decode(request.data['encoded_data']).decode('UTF-8')
    data = JSONParser().parse(b64decoded_data)
    
    推荐文章