Отправить файл на внешний api из InMemoryUploadedFile в Django - PullRequest
0 голосов
/ 04 августа 2020

В Django Framework я хотел бы отправить файл, полученный как InMemoryUploadedFile, на другой сервер, как только он будет получен.

Я пробовал решение в Django - опубликовать InMemoryUploadedFile на внешнем REST api , но решение у меня не сработало.

Запрос Curl, предоставленный внешним API:

curl --location --request POST 'https://app-sh.exmp.com/api/cret' \
--header 'Content-Type: multipart/form-data' \
--header 'api-key: Aa4f*******' \
--form 'kyc_doc=@/C:/Users/Shine/Downloads/image.png' \
--form 'company_name=name' \
--form 'company_country=IN' \
--form 'email=abc@xyz.com' 

Как преобразовать следующее в запрос. post ()?

Исходя из моего текущего функционального потока, файл не отправляется на внешний api. Вот мой код:

views.py

    def processUpload(request):
      data['company_country'] = request.POST.get('company_country')

      data['company_name'] = request.POST.get('company_name')
    
      #upload file
      data['kyc_doc'] = request.FILES['kyc_doc'].file.getvalue()

      files = {"kyc_doc":request.FILES['kyc_doc'].file.getvalue()}
      return service.doCurl(data,files)

service.py

   def doCurl(data,files):
      #.....
      # business logic here
      #
     del data['common_user_token']
     response_kcloud = curl.post('https://app-sh.exmp.com/api/cret',data,{ "api-key":acc.api_key},files)
    

curl.py

    def post(url,data,headers,ufile=None):

        curlheaders = {"Content-Type": "application/json"}

        #empty data
        if not data:
            raise Exception("data cannot be empty")
        #empty url
        if not url:
            raise Exception("Url cannot be empty")
        #base case for header
        if headers:
            for key in headers:
                curlheaders[key] = headers[key]
      
        if ufile is None:
            return requests.post(url, data=json.dumps(data), headers=curlheaders)
        else:
            return requests.post(url, data=data, headers=curlheaders,files=ufile)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...