【问题标题】:How to send file with react and django rest如何使用 react 和 django rest 发送文件
【发布时间】:2019-04-18 18:37:35
【问题描述】:

如何将图像文件从 react 发送到 django。

我是 react 和 django 的新手,目前我成功地从端点发送和获取数据,现在我想将图像文件或任何其他文件从 react 发送到 django 或从 django 获取图像文件反应。我写了一些代码,但它不能正常工作,我在发送文件时面临相当困难,我研究但没有得到任何有用的链接。请有人分享链接,我可以从中更好地了解它是如何工作的。下面是我的试试:

反应部分

       let doc=new JsPDF();
       doc.addImage(img,'JPEG',30,30);
       //doc.save('test.pdf');
       let formdata=new FormData();
       formdata.append('file',doc);

       fetch(`http://127.0.0.1:8000/chauffeur/pdf_upload/`,
           {
               method: 'POST',
               body:formdata,
           }
       ).then(response => response.json()).catch(error => console.error('Error:', error));

DJANGO 部分

class PdfUpload(APIView):

parser_classes = (MultiPartParser, FormParser,)

def get(self, request):
    return Response([PdfSerializer(file).data for file in Pdf.objects.all()])

def post(self,request):
    payload=(request.data,request.FILES)
    print("Hello")
    print(payload)
    serializer=PdfSerializer(data=payload)

    if serializer.is_valid():
        serializer.save()
        return Response("File Saved in Backend",status=status.HTTP_201_CREATED)
    return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)

但是我从上面的代码中得到了太多的错误,比如没有提交文件或预期的 dict 但收到列表,有人可以修复上面的代码或者可以分享有用的链接,我可以更好地理解。提前谢谢!

【问题讨论】:

    标签: javascript python django-rest-framework multipartform-data


    【解决方案1】:

    如果你的models.py中的对象名称是例如PdfModel这样写:

    from django.core.files import File
    
    def post(self, request):
        my_file = File(request.data.get('file'))
        new_pdf_file = PdfModel.objects.create(
             field1=request.data.get('field1'),
             field2=request.data.get('field2'), 
             field3=my_file )
        new_pdf_file.save()
        return Response({"something","something")
    

    【讨论】:

      猜你喜欢
      • 2019-11-02
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-06
      • 2023-03-09
      • 2019-06-03
      • 2016-08-23
      相关资源
      最近更新 更多