2013-06-26 8 views
13

Sto provando a caricare un file su un server usando curl e python. Di seguito ho il codice di come l'ho implementato. Qualche idea su quello che sto facendo male.Carica un file in un server di fiaschetta python usando 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" 

Quello che segue è l'errore che il server invia indietro

<!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> 

Grazie in anticipo.

+1

Il codice funziona se si postano i dati, ad es. 'curl -F" [email protected] "http: //127.0.0.1: 5000' che pertanto riduce il tuo problema a come gestisci le richieste PUT in Flask. – Doobeh

+0

Ricordo alcuni thread che dicono che request.files non funziona con PUT. Puoi provare request.data invece? – codegeek

+0

Il tuo codice sembra buono, cosa ottieni se provi: curl -X PUT -F [email protected] http: // localhost: 5000 – snahor

risposta

14

Il comando di arricciatura significa che stai trasmettendo due contenuti del modulo, un file chiamato filedata e un campo modulo chiamato name. Così si può fare questo:

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

ma request.files['Test'] non esiste.

+0

come si aggiungono i file? –

+0

@DineshVG Non sono sicuro di cosa intendi con la tua domanda. Il comando arricciamento invia una richiesta di posta con il dato file o dati del modulo al server a cui è possibile accedere nella rotta sull'oggetto richiesta, come mostrato. – mata

+0

Ho una pagina html attraverso la quale I - invia una richiesta di posta - allegando un file Ho provato usando un comando di arricciatura, non ha funzionato. Ho capito più tardi ... Ho dovuto dare due coppie di valori-chiave .. Una per il nome del file e un'altra per il file stesso. E farlo funzionare .. –

Problemi correlati