2
我是Flask的新手。我想創建一個非常基本的網站,允許上傳圖片。我找到了手冊,但是我想讓它略有不同。這裏是我的代碼:AttributeError:'FileField'對象沒有'File'屬性
###main.py
import os
from forms import UploadForm
from flask import Flask,render_template, url_for, redirect, send_from_directory
from werkzeug import secure_filename
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
app = Flask(__name__)
app.config['SECRET_KEY'] = 'string'
@app.route('/', methods=('GET', 'POST'))
def upload():
form = UploadForm()
if form.validate_on_submit() and allowed_file(form.presentation.File.filename):
filename = secure_filename(form.presentation.file.filename)
print filename
form.presentation.File.save(os.path.join('C:\Users\user\Desktop\New', filename))
return redirect(url_for('/'))
filename = None
return render_template('upload.html', form=form, filename=filename)
if __name__ == '__main__':
app.run(debug=True)
### forms.py
from flask.ext.wtf import Form
from wtforms import FileField, validators, ValidationError, SubmitField
from wtforms.validators import InputRequired
class UploadForm(Form):
presentation = FileField('Upload Image here', validators=[InputRequired()])
submit = SubmitField("Send")
### upload.html
{% for message in form.presentation.errors %}
<div class="flash">{{ message }}</div>
{% endfor %}
<form action="/" method="POST" enctype="multipart/form-data">
{{ form.presentation.label }}
{{ form.presentation }}
{{ form.csrf_token }}
{{ form.submit}}
</form>
上執行我得到一個錯誤:AttributeError的:「FileField或」對象有我搜索了整整一天沒有屬性「文件」 ,但我無法找到答案的什麼是錯的。
[Post](https://flask-wtf.readthedocs.org/en/latest/form.html?highlight=data)顯示它從FileField讀取:filename = secure_filename(form.photo.data.filename) form.photo.data.save('uploads /'+ filename) –