Um eine Flasche Anwendung zu testen, habe ich ein Posting Anfrage Kolben Test-Client mit Dateien als AnhangWie mehrere Dateien mit Flask Test Client POST?
def make_tst_client_service_call1(service_path, method, **kwargs):
_content_type = kwargs.get('content-type','multipart/form-data')
with app.test_client() as client:
return client.open(service_path, method=method,
content_type=_content_type, buffered=True,
follow_redirects=True,**kwargs)
def _publish_a_model(model_name, pom_env):
service_url = u'/publish/'
scc.data['modelname'] = model_name
scc.data['username'] = "BDD Script"
scc.data['instance'] = "BDD Stub Simulation"
scc.data['timestamp'] = datetime.now().strftime('%d-%m-%YT%H:%M')
scc.data['file'] = (open(file_path, 'rb'),file_name)
scc.response = make_tst_client_service_call1(service_url, method, data=scc.data)
Flask Server Code Endpunkt, der die oben POST-Anfrage Griffe ist so etwas wie dieses
@app.route("/publish/", methods=['GET', 'POST'])
def publish():
if request.method == 'POST':
LOG.debug("Publish POST Service is called...")
upload_files = request.files.getlist("file[]")
print "Files :\n",request.files
print "Upload Files:\n",upload_files
return render_response_template()
ich diesen Ausgang
Files:
ImmutableMultiDict([('file', <FileStorage: u'Single_XML.xml' ('application/xml')>)])
Upload Files:
[]
Wenn ich
ändernscc.data['file'] = (open(file_path, 'rb'),file_name)
in (denken, dass es mehrere Dateien umgehen würde)
scc.data['file'] = [(open(file_path, 'rb'),file_name),(open(file_path, 'rb'),file_name1)]
ich noch ähnliche Ausgabe erhalten:
Files:
ImmutableMultiDict([('file', <FileStorage: u'Single_XML.xml' ('application/xml')>), ('file', <FileStorage: u'Second_XML.xml' ('application/xml')>)])
Upload Files:
[]
Frage: Warum request.files.getlist ("file []") gibt eine leere Liste zurück? Wie kann ich mehrere Dateien mit dem flash test client posten, so dass er unter Verwendung von request.files.getlist ("file []") auf der flash server-Seite abgerufen werden kann?
Hinweis:
- Ich möchte Kolben-Client habe ich möchte nicht gewellt oder andere Client-basierten Lösungen.
- Ich möchte nicht schon diese Links einzelne Datei in mehrere Anfragen
Dank
Geworben schreiben:
Flask and Werkzeug: Testing a post request with custom headers
Python - What type is flask.request.files.stream supposed to be?
Danke. Ja. Nach einem Blick durch den Code, für "getlist", wurde mir klar, dass getList am letzten Abend für einen bestimmten Schlüssel aus dem multiDict zurückkommt. Ich habe einen falschen Schlüsselnamen benutzt, weil ich nicht so gut verstanden habe. Wie auch immer, du hast meine Frage beantwortet und wirst deine annehmen. Auch veröffentlichte Informationen, die ich in meiner anderen Antwort gesammelt habe. – user2390183