我想上傳影像并將其傳遞給flask中的python代碼,以便它可以在本地存盤和呼叫影像。從教程我有這個代碼,但是查詢似乎有問題,請求總是以“無檔案部分”結束:
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
如果我檢查請求中的資料:
print(request.data)
print(request.args)
print(request.form)
這給了我以下結果:
b''
ImmutableMultiDict([])
ImmutableMultiDict([('file', '6b6e63084d829d765f318a123f9997d6.jpg')])
這是我的python代碼
ALLOWED_IMAGE_TYPES = set(["png", "jpg", "jpeg", "gif"])
def allowed_file(filename):
print("Check if image types is allowed")
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_IMAGE_TYPES
@app.route("/crop", methods=["GET", "POST"])
@login_required
def crop():
if request.method == "POST":
if 'file' not in request.files:
flash('No file part')
return redirect(request.url)
file = request.files['file']
if file.filename == '':
flash('No image selected for uploading')
return redirect(request.url)
if file and allowed_file(file.filename):
print("test2")
filename = secure_filename(file.filename)
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
print('upload_image filename: ' filename)
flash('Image successfully uploaded and displayed below')
return render_template('index.html', filename=filename)
else:
flash('Allowed image types are - png, jpg, jpeg, gif')
return redirect(request.url)
else:
return render_template("crop.html")
@app.route('/display/<filename>')
def display_image(filename):
print('display_image filename: ' filename)
return redirect(url_for('static', filename='uploads/' filename), code=301)
<div class="container">
<div class="row">
<p>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
</p>
{% if filename %}
<div>
<img src="{{ url_for('display_image', filename=filename) }}">
</div>
{% endif %}
<form method="POST" action="/crop" enctype="multipart/form-data">
<dl>
<p>
<input type="file" name="file" value="file" id="file" class="form-control" autocomplete="off" required>
</p>
</dl>
<p>
<input type="submit" value="Submit" class="btn btn-info">
</p>
</form>
uj5u.com熱心網友回復:
request.files是一個 dict 物件,因此檢查名稱是否在其中應該可以作業。由于某種原因它不是,所以你可以嘗試檢查它是否在keys(),盡管這應該是不必要的。
if 'file' not in request.files.keys():
flash('No file part')
return redirect(request.url)
uj5u.com熱心網友回復:
在HTML代碼中發現問題,大括號周圍的引號是錯誤的。
<img src={{ url_for('display_image', filename=filename) }}>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/403768.html
標籤:
