【发布时间】:2016-12-05 05:53:40
【问题描述】:
我在 html/php 中创建了一个表单,并使用烧瓶作为后端。
一切都很完美,除了当我尝试上传图片时,我总是看到错误:
error is**"UnboundLocalError: local variable 'filename' referenced before assignment"**
我的flaskapp代码sn-p是
@app.route('/apple', methods=['GET', 'POST'])
def apple():
onlineAppForm = RegForm()
if request.method == 'POST':
try:
file = request.files['file']
if file and allowed_file(file.filename):
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
except Exception as e:
print "Form without file "+str(e)
return render_template("apply2.html", data=data, filename=filename, form=onlineAppForm)
这是我的上传文件夹
UPLOAD_FOLDER = 'static/uploads'
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.secret_key = os.urandom(24)
我不知道错误在哪里。
def allowed_file(filename):
return '.' in filename and \
filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
这是我的表格
<tr>
<td class="sectionheading">Upload Scanned Copies</td>
</tr>
<tr>
<td height="12"> </td>
</tr>
<tr id="photosignthumb_span" height="40">
<td align="left" valign="middle" width="100%"> <b>
<span class="mandatory">*</span>
Please upload scanned copies of your photo </b>
<input type="file" name="photo" id="photofile"
method="post"/><br>
Please upload your recent passport size photograph:max
80KB(Only JPEG and JPG formats)
</td>
</tr>
<tr id="photosignthumb_span" height="40">
<td align="left" valign="middle" width="100%"> <b>
<span class="mandatory">*</span>
Please upload scanned copies of your signature </b>
<input type="file" name="sign" id="signfile"
method="post"/><br>
Please upload your recent passport size photograph:max
80KB(Only JPEG and JPG formats)
</td>
</tr>
【问题讨论】:
-
如果
if file and allowed_file(file.filename)没有通过或引发异常会怎样?...filename显然不存在! -
是的,m 得到了,m 无法上传,所以文件名将不存在,但我必须做些什么才能通过。
-
你能贴出
allowed_file的代码和相关的模板文件(你要从中上传文件)吗? -
def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
标签: python flask flask-wtforms flask-appbuilder