передать текстовый файл через django API - PullRequest
0 голосов
/ 28 февраля 2020

У меня есть настройка django REST API, который будет принимать обычный текстовый файл, обрабатывать его и отправлять обратно вывод, который у меня есть, кроме части загрузки.

class Validate(views.APIView):
    parser_class = (FileUploadParser,)

    def post(self, request, format=None):
        print("Validation request received")
        if 'file' not in request.data:
            raise ParseError("Empty Content")
        uploadedFile = request.data['file']
        data = request.data
        print(type(uploadedFile))
        runValidationWrapper(uploadedFile)
        outputFile = os.path.splitext(uploadedFile)[0] + "_validation_output.xml"
        document = open(outputFile, 'rb')
        response     = HttpResponse(FileWrapper(document), content_type='text/plain')
        #response['Content-Length']      = document.size
        response['Content-Disposition'] = 'attachment; filename="somefile.xml"'

Я называю это как следующее:

import requests
import json
import time
url = "http://127.0.0.1:8000/App/validate/"
#url = "http://192.168.166.142/nlp/App/validate/"
#headers = {"content-type":"application/json", "Accept": "text/plain"}
headers = {"content-type":"application/json"}

data ={"file" : '/home/dfdf/temp/PMC1257590_Missing Instances.xml')}

data_json = json.dumps(data)

response = requests.post(url, data= data_json, headers = headers)
file = open("validation.txt", "w")
file.write(response.text)
file.close()

Это прекрасно работало, когда я тестировал на том же сервере, потому что файл был доступен, но на самом деле он не загружался. Я думал, что FileUploadParser позаботится об этом. Нужно ли читать файл и отправлять байты? Как мне это сделать.

...