flask上传图片解决方案
生活随笔
收集整理的這篇文章主要介紹了
flask上传图片解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
flask上傳圖片解決方案
一、前端
前端的form表單必須加enctype=“multipart/form-data” 屬性,method必須為post
示例代碼如下:
<!DOCTYPE html> <html lang="zh"> <head><meta charset="UTF-8"><title>注冊</title> </head> <body> <form method="post" action="/register" enctype="multipart/form-data"><h3>注冊</h3><input type="file" name="photo"><input type="text" placeholder="賬號" name="username"><input type="text" placeholder="密碼" name="pwd"><button style="margin-top: 10px" type="submit">注冊賬號</button> </form> </body> </html>網頁截圖為:
二、后端
我用的后端是flask,下面是對應的路由:
@app.route('/register', methods=['POST']) def register():img = request.files.get('photo') # 從post請求中獲取圖片數據suffix = '.' + img.filename.split('.')[-1] # 獲取文件后綴名basedir = os.path.abspath(os.path.dirname(__file__)) # 獲取當前文件路徑photo = '/static/uploads/' + str(int(time.time())) + suffix # 拼接相對路徑img_path = basedir + photo # 拼接圖片完整保存路徑,時間戳命名文件防止重復img.save(img_path) # 保存圖片print(img_path)# 其他參數用request.form字典獲取username = request.form.get('username', '')pwd = request.form.get('pwd', '')# 這些值都可直接保存到數據庫中print(photo, username, pwd)return {'msg':'ok'}后端截圖:
三、結語
如果你做的系統中多次用到上傳圖片到服務器的話,建議將保存圖片作為單獨的方法拉出來,方便多次調用。下面是我寫的接口:
# 保存圖片根路徑 BASEDIR = os.path.abspath(os.path.dirname(__file__))# 保存圖片到/static/uploads文件夾,并以時間戳命名 # 返回/static/uploads/filename def saveImg(img):# 時間戳作為文件名img_path = BASEDIR + '/static/uploads/' + str(int(time.time())) + '.' + img.filename.split('.')[-1]img.save(img_path)print(img_path)photo_path = '/static/uploads/' + str(int(time.time())) + '.' + img.filename.split('.')[-1]print(photo_path)return photo_path總結
以上是生活随笔為你收集整理的flask上传图片解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: J2me的基本概念(转)
- 下一篇: linux服务器之间的文件同步(双向同步