2013-06-26 9 views
13

Ich versuche, eine Datei auf einen Server mit Curl und Pythonflasche hochladen. Im Folgenden habe ich den Code, wie ich ihn implementiert habe. Irgendwelche Ideen, was ich falsch mache.Laden Sie eine Datei auf einen Python-Flaschen-Server mit curl

curl -i -X PUT -F name=Test -F [email protected] "http://localhost:5000/" 

@app.route("/", methods=['POST','PUT']) 
def hello(): 
    file = request.files['Test'] 
    if file and allowed_file(file.filename): 
     filename=secure_filename(file.filename) 
     print filename 

    return "Success" 

Im Folgenden ist der Fehler, dass der Server

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 
<title>400 Bad Request</title> 
<h1>Bad Request</h1> 
<p>The browser (or proxy) sent a request that this server could not understand.</p> 

Vielen Dank im Voraus zurück

sendet.

+1

Ihr Code funktioniert, wenn Sie die Daten POST, z. "curl -F" [email protected] "http: //127.0.0.1: 5000", was Ihr Problem dadurch einschränkt, dass Sie PUT-Anfragen in Flask bearbeiten. – Doobeh

+0

Ich erinnere mich an einen Thread, der besagt, dass request.files nicht mit PUT funktioniert. Können Sie stattdessen request.data ausprobieren? – codegeek

+0

Ihr Code sieht gut aus, was Sie bekommen, wenn Sie versuchen: curl -X PUT -F Test [email protected] http: // localhost: 5000 – snahor

Antwort

14

Der Befehl curl bedeutet, dass Sie zwei Formularinhalte übertragen, eine Datei mit der Bezeichnung filedata und ein Formularfeld mit der Bezeichnung name. So können Sie dies tun:

file = request.files['filedata'] # gives you a FileStorage 
test = request.form['name']  # gives you the string 'Test' 

aber request.files['Test'] ist nicht vorhanden.

+0

Wie fügen Sie die Dateien hinzu? –

+0

@DineshVG Ich bin mir nicht sicher, was Sie mit Ihrer Frage meinen. Der Befehl curl sendet eine Post-Anforderung mit den angegebenen Datei- oder Formulardaten an den Server, auf die in der Route auf dem Anforderungsobjekt wie gezeigt zugegriffen werden kann. – mata

+0

Ich habe eine HTML-Seite, durch die ich - senden Sie eine Anfrage senden - durch Anhängen einer Datei Ich versuchte es mit einem Curl-Befehl, es hat nicht funktioniert. Ich später herausgefunden ... Ich musste zwei Schlüssel-Wert-Paare geben. Eine für den Namen der Datei und eine andere für die Datei selbst. Und habe es zur Arbeit gebracht. –

Verwandte Themen