前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flask avatars用户自己上传头像(flask 84)

flask avatars用户自己上传头像(flask 84)

作者头像
用户5760343
发布2019-08-20 18:11:09
8900
发布2019-08-20 18:11:09
举报
文章被收录于专栏:sktjsktj

py

import os

from flask import Flask, render_template, url_for, send_from_directory, request, session, redirect from flask_avatars import Avatars

basedir = os.path.abspath(os.path.dirname(name))

app = Flask(name) app.secret_key = 'dev' app.config['AVATARS_SAVE_PATH'] = os.path.join(basedir, 'avatars')

avatars = Avatars(app)

In reality, you can use Flask-WTF/WTForms to handle file upload and form validation.

serve avatar image

@app.route('/avatars/<path:filename>') def get_avatar(filename): return send_from_directory(app.config['AVATARS_SAVE_PATH'], filename)

@app.route('/', methods=['GET', 'POST']) def upload(): if request.method == 'POST': f = request.files.get('file') raw_filename = avatars.save_avatar(f) session['raw_filename'] = raw_filename # you will need to store this filename in database in reality return redirect(url_for('crop')) return render_template('upload.html')

@app.route('/crop', methods=['GET', 'POST']) def crop(): if request.method == 'POST': x = request.form.get('x') y = request.form.get('y') w = request.form.get('w') h = request.form.get('h') filenames = avatars.crop_avatar(session['raw_filename'], x, y, w, h) url_s = url_for('get_avatar', filename=filenames[0]) url_m = url_for('get_avatar', filename=filenames[1]) url_l = url_for('get_avatar', filename=filenames[2]) return render_template('done.html', url_s=url_s, url_m=url_m, url_l=url_l) return render_template('crop.html')

upload.html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Flask-Avatars Demo</title> </head> <body> <h1>Step 1: Upload</h1> <form method="post" enctype="multipart/form-data"> <input type="file" name="file"> <input type="submit"> </form> </body> </html>

crop.html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Flask-Avatars Demo</title> {{ avatars.jcrop_css() }} <style> #preview-box { display: block; position: absolute; top: 10px; right: -280px; padding: 6px; border: 1px rgba(0, 0, 0, .4) solid; background-color: white; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2); -moz-box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2); box-shadow: 1px 1px 5px 2px rgba(0, 0, 0, 0.2); } </style> </head> <body> <h1>Step 2: Crop</h1> {{ avatars.crop_box('get_avatar', session['raw_filename']) }} {{ avatars.preview_box('get_avatar', session['raw_filename']) }} <form method="post"> <input type="hidden" id="x" name="x"> <input type="hidden" id="y" name="y"> <input type="hidden" id="w" name="w"> <input type="hidden" id="h" name="h"> <input type="submit" value="Crop!"> </form> {{ avatars.jcrop_js() }} {{ avatars.init_jcrop() }} </body> </html>

done.html

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Flask-Avatars Demo</title> </head> <body> <h1>Done!</h1> <p><a href="/">Back to Step 1</a></p> <p>small: <img src="{{ url_s }}"></p> <p>medium: <img src="{{ url_m }}"></p> <p>large: <img src="{{ url_l }}"></p> </body> </html>

mkdir avatars

avatars/.gitkeep

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.08.13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • py
  • In reality, you can use Flask-WTF/WTForms to handle file upload and form validation.
  • serve avatar image
  • upload.html
  • crop.html
  • done.html
  • mkdir avatars
  • avatars/.gitkeep
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档