2014-08-31 34 views
5

Flask'taki dosya gönderimleri için this simple tutorial'u takip etmeye çalışıyorum. Aşağıdaki olsun Sonuç olarakNeden request.files` boş?

print 'request.method', request.method 
print 'request.args', request.args 
print 'request.form', request.form 
print 'request.files', request.files 

: Ben şu şekilde request değişkenin içeriğini kontrol form gönderme sonra

<form action="" method="post" "enctype=multipart/form-data"> 
<table border="0" summary=""><tbody> 
    <tr> 
     <th> 
      <label for="image_file">Your image:</label> 
     </th> 
     <td> 
      <input type="file" id="image_file" name="image_file"></input> 
     </td> 
    </tr> 
    <tr> 
     <td> 
     </td> 
     <td> 
      <input type="submit" value="Submit" /> 
      <a href="/test_func">Cancel</a> 
     </td> 
    </tr> 
</tbody></table> 
</form> 

: Aşağıdaki HTML formu kullanan dosyaları göndermek için

request.method POST 
request.args ImmutableMultiDict([]) 
request.form ImmutableMultiDict([('image_file', u'badge.gif')]) 
request.files ImmutableMultiDict([]) 

Ne anlamadım request.files boş. Yukarıda belirtilen öğreticiye göre dosya nesnesini almak için file = request.files['file'] kullanmam gerekiyor (kaydetmek için).

Neyi yanlış yapıyorum?

+2

Gerçekten kullandığınız HTML ise, çift tırnak 'enctype = 'sonra olmalıdır. Şu anda her şey bir dizgidir, bu yüzden muhtemelen dosyayı göndermiyor, sadece alan adını. – davidism

cevap

8

Form etiketinizde yanlış alıntı var.

<form action="" method=post enctype=multipart/form-data> 

(hayır tırnak), ancak daha iyi oluşmuş HTML kullanmak olacaktır: öğretici kullanmak söyler tırnak sadece değerleri etrafında niteliklerin olduklarını

<form action="" method="post" enctype="multipart/form-data"> 

Not .

enctype doğru ayarlanmadan, form farklı bir kodlama kullanır ve tarayıcınız dosya verilerini doğru şekilde yüklemez ve Flask dosya verilerini ayrıştırma girişiminde bulunmaz.

İlgili konular