In the Django Rest Framework I would like to post a file, received as an InMemoryUploadedFile, to a different server as soon as it is received. It sounds simple, but the request.post() function does not seem to properly send over such a file : def post(self, request, *args, **kwargs): data = request.data print(data) # <QueryDict: {'file': [<InMemoryUploadedFile: myfile.pdf (application/pdf)>]}> endpoint = OTHER_API_URL + "/endpoint" r = requests.post(endpoint, files=data) My other server receives the request (through flask) with the name of the file, but not the content: @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) #<FileStorage: u'file.pdf' (None)> print(os.path.getsize(path)) #0 return [{"response":"ok"}] When posting a file directly to that api in form-data with postman, It works as expected: print(file) # <FileStorage: u'file.pdf' ('application/pdf')> print(os.path.getsize(path)) #8541 Any help on how to fix this, i.e. transform the InMemoryUploadedFile type in something a normal REST api can understand? Or maybe just adding the right headers? Continue reading...