我有两台服务器。服务器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 UI,因此无法更改其处理输入的方式。
现在,我想从驻留在服务器B上的另一个python脚本调用上述脚本。因此,我需要执行以下操作:
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
。因此,当我从服务器B调用fileItem.filename
的值时(在服务器A上的脚本中),我想控制它。如何实现? CGI字段名称upload-file
不得更改。我尝试使用params
方法的post
自变量,但没有使它以这种方式工作(我是python的新手,在学习过程中一直使用Google进行搜索)。>
答案 0 :(得分:0)
找到答案:
files = {"upload-file": ("desired-file-name.xml", "some file content")}
response = requests.post(
"http://10.20.30.40/cgi-bin/upload-xml.py",
files = files)