簡體   English   中英

通過需要文件的CGI表單字段將文本傳遞給python

[英]Pass text to python via a CGI form field that expects a file

我有兩台服務器。 服務器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不得更改。 我嘗試使用post方法的params參數,但沒有使它以這種方式工作(我是python的新手,在繼續學習時一直在搜索內容)。

找到了答案:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM