Graphene-file-upload обработка multipart/form-data
Я пытаюсь загрузить изображение из моего react/nextJS front end в мой Django backend, используя graphQL и graphene-file-upload.
Это фронтенд - важными функциями здесь являются handleSelectedLogo и submitVendor
Это бэкенд schema.py
class CreateLogo(graphene.Mutation):
class Arguments:
file = Upload(required=True)
success = graphene.Boolean()
@staticmethod
def mutate(self, info, file, **kwargs):
# do something with your file
print(info.context.FILES.items)
print('This is file:', file)
print(kwargs)
logo = Logo(logo=file)
logo.save()
return CreateLogo(success=True)
class Mutation(graphene.ObjectType):
token_auth = graphql_jwt.ObtainJSONWebToken.Field()
verify_token = graphql_jwt.Verify.Field()
refresh_token = graphql_jwt.Refresh.Field()
#greetings
update_greeting = UpdateGreeting.Field()
create_greeting = CreateGreeting.Field()
#vendors
create_vendor = CreateVendor.Field()
update_vendor = UpdateVendor.Field()
single_upload = UploadMutation.Field()
create_logo = CreateLogo.Field()
schema = graphene.Schema(query=Query, mutation=Mutation)
Это ошибка, которую я получаю
django.http.multipartparser.MultiPartParserError: Invalid boundary in multipart: None
[20/Jul/2022 00:21:47] "POST /api/graphql/ HTTP/1.1" 400 143
Если я меняю заголовок запроса на Content-type: "application/json", запросы проходят успешно, но аргумент file в методе mutate пуст, как и info.context.FILES.items
Подведем итоги: запрос на выборку не проходит, если заголовок Content-Type: multipart/form-data, и проходит успешно, но файл не отправляется, если заголовок Content-Type: "application/json.
Я искал в Интернете похожую проблему, но, похоже, ни у кого нет решения этой проблемы.
Моя догадка заключается в том, что мне нужно, чтобы Django принимал заголовок multipart/form-data для отображения файлов, но я не уверен, где это можно исправить
Как упоминал @Brian Destura. Не указывать заголовки должно работать.
Также стоит отметить, что этот логический путь, где не указаны заголовки, является единственным, включенным в автоматизированные тесты для graphene-file-upload
.
Наконец, в спецификации, на которую дана ссылка, нет примера, где заголовок требуется или даже включен.
References
https://github.com/lmcgartland/graphene-file-upload/blob/master/tests/test_django.py
https://github.com/jaydenseric/graphql-multipart-request-spec