Flask 實現簡單的圖片上傳工具

通過使用Flask框架實現一個簡單的圖片上傳工具,當用戶提交圖片後會自動將圖片保存到upload目錄下,代碼如下

import os
from flask import Flask, request
import random
import string
import datetime

ALLOWED_EXTENSIONS = set(['rar', 'zip' ,'xls','xlsx','docx','doc','html','png', 'jpg', 'jpeg', 'gif'])
app = Flask(__name__)
app.config['UPLOAD_FOLDER'] = "./upload_file"                    # 將文件上傳到當前目錄
app.config['MAX_CONTENT_LENGTH'] = 32 * 1024 * 1024              # 限制只能上傳16M的文件

html = '''
    <!DOCTYPE html>
    <form action="" method="post" enctype="multipart/form-data">
        請求序號: {} <br><br>
        下單日期: {} <br><br>
        接收郵箱: <input type="text" id="email" name="email"><br><br>
        需求描述: <textarea rows="5" cols="37" id="my_text" name="my_text" value=""></textarea><br><br>
        上傳文件: <input type="file" name="file"><br><br>
        <b>----------------------------------------</b>
        <br> 注: 多個文件請壓縮爲 .rar .zip 壓縮包後上傳<br>
        <b>----------------------------------------</b><br><br>
        <input type="submit" value="提交訂單請求">
    </form>
    '''
ref_html = '''
    <b>------------------------------------------------------</b>
    <br>您的訂單已提交,感謝您的支持 <br>
    <b>------------------------------------------------------</b><br><br>
    付款訂單號: {} <br><br>
    接收郵件地址: {} <br><br>
    請使用微信支付,並備註該訂單號,處理完成後會第一時間郵件發送給您! <br><br>
    ---> PS圖片處理 10元 每張 <br>
    ---> 打印複印材料 0.5元 每張 -> 宿舍: 3號樓 2層 210自提 <br><br>
    <img style="width: 200px;" src="./static/web.jpeg" />
'''
def GenPassword(length):
    chars=string.ascii_letters+string.digits
    return ''.join([random.choice(chars) for i in range(length)])
def allowed_file(filename):
    return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
@app.route('/', methods=['GET', 'POST'])
def upload_file():
    if request.method == 'GET':
        this_uuid = GenPassword(20)
        now_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M')
        return html.format(this_uuid,now_time)
    if request.method == 'POST':
        ud = GenPassword(5)
        try:
            file = request.files.get("file")
            email = request.form.get("email")
            my_text = request.form.get("my_text")
            if file == None or email == None or my_text == None:
                return "接口錯誤"
            if file and allowed_file(file.filename):
                file.save(os.path.join(app.config['UPLOAD_FOLDER'], "{}_{}".format(ud,file.filename)))
                print("*" * 200)
                print("訂單號: {} ---> 接收郵箱: {} ---> 文件名: {}_{} ---> 需求: {} \n\n".format(ud,email,ud,file.filename, my_text))
                print("*" * 200)
                return ref_html.format(ud,email)
        except Exception:
            pass
    return "接口錯誤"

if __name__ == '__main__':
    app.run()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章