python 圖片上傳接口開發 並生成可以訪問的圖片url

版本:python3.7

功能,開發一個用戶訪問的頁面,支持圖片上傳,並將其保存在服務器。

 

項目結構:

 

app.py文件內容如下:

from flask import Flask, Response, request, render_template
from werkzeug.utils import secure_filename
import os

app = Flask(__name__)


# 設置圖片保存文件夾
UPLOAD_FOLDER = 'photo'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER

# 設置允許上傳的文件格式
ALLOW_EXTENSIONS = ['png', 'jpg', 'jpeg']


# 判斷文件後綴是否在列表中
def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[-1] in ALLOW_EXTENSIONS


# 上傳圖片
@app.route("/photo/upload", methods=['POST', "GET"])
def uploads():
    if request.method == 'POST':
        # 獲取post過來的文件名稱,從name=file參數中獲取
        file = request.files['file']
        if file and allowed_file(file.filename):
            print(file.filename)
            # secure_filename方法會去掉文件名中的中文
            file_name = secure_filename(file.filename)
            # 保存圖片
            file.save(os.path.join(app.config['UPLOAD_FOLDER'], file_name))
            return "success"
        else:
            return "格式錯誤,請上傳jpg格式文件"
    return render_template('index.html')


# 查看圖片
@app.route("/photo/<imageId>.jpg")
def get_frame(imageId):
    # 圖片上傳保存的路徑
    with open(r'C:/Users/Administration/Desktop/photo_ceshi/photo/{}.jpg'.format(imageId), 'rb') as f:
        image = f.read()
        resp = Response(image, mimetype="image/jpg")
        return resp


if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000, debug=True)

 

index.html內容如下:

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
    <meta charset="UTF-8">
    <title>Upload</title>
</head>
<h1>請上傳圖片文件</h1>
<form action="" method=post enctype=multipart/form-data>
<p><input type=file name=file>
<input type=submit value=Upload>
</form>

 

啓動app.py文件後,我們先訪問 http://127.0.0.1:8002/photo/upload

1、頁面如下:

2、我們先上傳一張 1001.jpg,提交後界面如下:

 

3、然後我們嘗試通過圖片url來訪問這張圖片:

搞定收工!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章