Sie sollten "multipart/form-data" nicht explizit festlegen. Es überschreibt alle anderen Teile des Headers, die durch Anfragen festgelegt wurden ("multipart/form-data; boundary = 4b9 ...",). Es ist nicht notwendig, den Header zu setzen, Anfragen erledigen das für Sie. Sie können die Anforderungsheader (requests.headers) im folgenden Beispiel sehen. Sie können sehen, dass
import requests
endpoint = "http://httpbin.org/post"
r = requests.post(
endpoint,
files={"config": ("conf.ttl", open("conf.ttl", "rb"), "text/turtle")}
)
print r.request.headers
print r.headers
print r.text
gibt:
{'Content-Length': '259', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.10.0', 'Connection': 'keep-alive', 'Content-Type': 'multipart/form-data; boundary=4b99265adcf04931964cb96f48b53a36'}
{'Content-Length': '530', 'Server': 'nginx', 'Connection': 'keep-alive', 'Access-Control-Allow-Credentials': 'true', 'Date': 'Fri, 20 May 2016 20:50:05 GMT', 'Access-Control-Allow-Origin': '*', 'Content-Type': 'application/json'}
{
"args": {},
"data": "",
"files": {
"config": "curl -X POST \"endpoint\" -H 'Content-Type: multipart/form-data' -F \"[email protected]\"\n\n"
},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "259",
"Content-Type": "multipart/form-data; boundary=4b99265adcf04931964cb96f48b53a36",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.10.0"
},
"json": null,
"origin": "84.92.144.93",
"url": "http://httpbin.org/post"
}
Wo, wie Sie den Code mit dem expliziten Header einen Fehler auf den gleichen URL gibt.
{'Content-Length': '259', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'User-Agent': 'python-requests/2.10.0', 'Connection': 'keep-alive', 'Content-Type': 'multipart/form-data'}
{'Date': 'Fri, 20 May 2016 20:54:34 GMT', 'Content-Length': '291', 'Content-Type': 'text/html', 'Connection': 'keep-alive', 'Server': 'nginx'}
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>500 Internal Server Error</title>
<h1>Internal Server Error</h1>
<p>The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.</p>
Nicht sicher, aber ich glaube, dass Sie "Config" in "Datei" ändern möchten. – DeepSpace