У меня есть два сервера. Сервер A содержит скрипт Python upload.py
для загрузки файла; этот скрипт ожидает, что файл будет передан в поле формы:
form = cgi.FieldStorage()
if "upload-file" not in form:
print("Need an upload file")
else:
fileItem = form["upload-file"]
if not fileItem.file:
print("Not a file")
else:
fileContent = fileItem.file.read()
outFilePath = os.path.join("/some/path/", fileItem.filename)
outFile = open(outFilePath, "wb")
outFile.write(fileContent)
# etc.
Этот скрипт работает, и способ обработки его ввода не может быть изменен из-за существующего пользовательского интерфейса HTML / JavaScript, который опирается на этот интерфейс.
Теперь я хочу вызвать вышеуказанный скрипт из другого скрипта python, находящегося на сервере B. Поэтому мне нужно сделать что-то похожее на это:
import requests
# Call script on server A
response = requests.post(
"http://10.20.30.40/cgi-bin/upload.py",
files = { "upload-file": "some file content" })
Это на самом деле создает файл на сервере A, но он называется upload-file
. Поэтому я хочу контролировать значение fileItem.filename
(в сценарии на сервере A) при вызове его с сервера B. Как я могу этого добиться? Имя поля CGI upload-file
не должно изменяться. Я пытался использовать аргумент params
метода post
, но так не получилось (я новичок в python, и просто гуглюсь, пока иду вперед).