Загрузка сгенерированного PDF файла из React в Django (без <input type="file">)
Я пытаюсь загрузить сгенерированный PDF файл из React в Django, но он не работает. Я протестировал конечную точку django с помощью postman, и она работает правильно. Я знаю, как сделать это с помощью <input type="file">
, но в этом случае пользователь не предоставляет никаких данных, потому что файл генерируется как PDF с помощью React.
Вот мой Django View:
class quizPdfView(APIView):
parser_classes = [MultiPartParser, FormParser]
def post(self,request):
try:
print(request.data)
quizPDF.objects.create(user=request.user,pdf=request.data['pdf'])
return Response(status=status.HTTP_200_OK)
except Exception as e:
print(e)
return Response(status=status.HTTP_400_BAD_REQUEST)
А вот как я отправляю данные из React (файл, который я отправляю, просто для теста, позже я изменю его на тот, который должен быть отправлен):
const config = { header: {'Content-Type': 'multipart/form-data'} };
const URL = 'http://127.0.0.1:8000/api/uploadpdf/';
let formData = new FormData();
var doc = new jsPDF();
doc.text(20, 20, 'Hello world!');
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.');
doc.addPage();
doc.text(20, 20, 'Do you like that?');
formData.append('pdf',doc)
axios
.post(URL,formData,config)
.then((res) => {
console.log(res.status)
})
.catch((err) => console.log(err));
И, когда я отправляю запрос, я получаю эту ошибку в django:
<QueryDict: {'pdf': ['[object Object]']}>
Cannot assign "<django.contrib.auth.models.AnonymousUser object at 0x7f47fe90c6d0>": "quizPDF.user" must be a "User" instance.
Bad Request: /api/uploadpdf/
[17/Sep/2021 06:54:43] "POST /api/uploadpdf/ HTTP/1.1" 400 0
Я не знаю, почему файл отправляется как <QueryDict: {'pdf': ['[object Object]']}>
, а не как <QueryDict: {'pdf': [<InMemoryUploadedFile: EXAMPLE.pdf (application/pdf)>]}>
(это вывод print(request.data)
, когда я отправляю файл с помощью Postman).