Django – отправить InMemoryUploadedFile во внешний REST API ⇐ Python

Программы на Python
Anonymous
Django – отправить InMemoryUploadedFile во внешний REST API

Сообщение Anonymous »

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

Звучит просто, но функция request.post(), похоже, не передает такой файл должным образом:

Код: Выделить всё

def post(self, request, *args, **kwargs):
data = request.data
print(data)
# 
endpoint = OTHER_API_URL + "/endpoint"
r = requests.post(endpoint, files=data)
Мой другой сервер получает запрос (через flask) с именем файла, но не с содержимым:

Код: Выделить всё

@app.route("/endpoint", methods=["POST"])
def endpoint():
if flask.request.method == "POST":
# I removed the many checks to simplify the code
file = flask.request.files['file']
path = os.path.join(UPLOAD_FOLDER, file.filename)
file.save(path)

print(file) #
print(os.path.getsize(path)) #0

return [{"response":"ok"}]
При отправке файла непосредственно в этот API в данных формы с помощью почтальона он работает должным образом:

Код: Выделить всё

        print(file) # 
print(os.path.getsize(path)) #8541
Любая помощь о том, как это исправить, т. е. преобразовать тип InMemoryUploadedFile во что-то, что может понять обычный REST API? Или, может быть, просто добавить правильные заголовки?

Подробнее здесь: https://stackoverflow.com/questions/511 ... l-rest-api

Вернуться в «Python»