Próbuję podążać za this simple tutorial w celu przesyłania plików w kolbie. Aby przesłać pliki używam poniższego formularza HTML:Dlaczego `request.files` jest pusty?
<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>
Po złożeniu formularza sprawdzić zawartość zmiennej request
w następujący sposób:
print 'request.method', request.method
print 'request.args', request.args
print 'request.form', request.form
print 'request.files', request.files
W rezultacie pojawia się następujący:
request.method POST
request.args ImmutableMultiDict([])
request.form ImmutableMultiDict([('image_file', u'badge.gif')])
request.files ImmutableMultiDict([])
Czego nie rozumiem, to, co request.files
jest puste. Zgodnie z powyższym przytoczonym samouczkiem muszę użyć file = request.files['file']
, aby pobrać obiekt pliku (aby go zapisać).
Co robię źle?
Jeśli to naprawdę HTML, którego używasz, podwójny cudzysłów powinien pojawić się po 'enctype ='. W tej chwili cała sprawa jest ciągiem, więc prawdopodobnie nie wysyła pliku, tylko nazwa z pola. – davidism