В Колба (установлен Колба-0.10.1 через пип) Я пытался справиться с загруженными файлами, как этотPython - Какой тип flask.request.files.stream должен быть?
f = flask.request.files[input_name]
stream = f.stream
# then use the stream
Но это заблуждение, что в некоторых случаях stream
является BytesIO
экземпляр, но и шанс быть a file
объект.
Я протестировал таким образом
from flask import Flask, request
import cStringIO
app = Flask('test')
@app.route("/", methods=['POST'])
def index():
if request.method == 'POST':
f = request.files['file']
print type(f.stream)
def send_file(client, name):
with open(name, 'rb') as f:
client.post('/', data={'file': (cStringIO.StringIO(f.read()), name)})
if __name__ == "__main__":
with app.test_client() as client:
send_file(client, 'homercat.png')
send_file(client, 'megacat-2.png')
Он печатает
<type '_io.BytesIO'>
<type 'file'>
Файлы PNG взяты из GitHub:
http://octodex.github.com/images/homercat.png http://octodex.github.com/images/megacat-2.png
Интересно, почему колба ведет себя таким образом. И если я хочу, чтобы загруженные данные попали в базу данных, можно ли в любом случае позвонить f.stream.read()
?
Я узнал его с этой сутью https://gist.github.com/ lost-theory/3772472, и он вызывает исключение, когда я заменяю элементы в кортеже. – neuront
@neuront: Смотрите мое обновление. – Blender