python flask文件上傳實現和ftp類似功能

新購一個遠程主機,centos系統,嘗試創建vsftpd服務,一直沒有通暢,於是乾脆寫了個python flask應用來上傳文件:

import os
from flask import Flask, request, url_for, send_from_directory
#from werkzeug import secure_filename
from werkzeug.utils import secure_filename

ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg', 'gif','txt','html','css','js','py','svg','zip'])

app = Flask(__name__)
#設置當前路徑爲上傳文件存儲的地方
app.config['UPLOAD_FOLDER'] = os.getcwd()
print(app.config['UPLOAD_FOLDER'])
#限定上傳文件最大不超過16M
app.config['MAX_CONTENT_LENGTH'] = 16 * 1024 * 1024


html = '''
    <!DOCTYPE html>
    <title>文件上傳</title>
    <h1>文件上傳</h1>
    <form method='post' enctype='multipart/form-data'>
        <input type='password' name='pswd' placeholder='密碼'>        
         <input type='file' name='file'>
         <input type='submit' value='上傳文件到主機'>
    </form>
    '''


#判斷文件類型是否符合要求
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 == 'POST':
        pswd = request.form.get('pswd')
        if pswd and pswd=='******':
            file = request.files['file']
            if file and allowed_file(file.filename):
                filename = secure_filename(file.filename)
                file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
                return html+filename+'已經上傳成功!'
        else:
            return html+'密碼不正確'
    return html


if __name__ == '__main__':
    app.run(host='127.0.0.1',port=80)
    #app.run(host='0.0.0.0',port=80)
    
    
    
'''
如果直接在遠程終端輸入python yourflaskapp.py運行flask應用,關閉終端後flask應用也會終端退出,爲了避免這一點,我們先安裝tmux終端

yum install tmux

然後執行

tmux

終端開啓後再輸入

python yourflaskapp.py

這樣關閉終端後,flask仍然在後臺持續運行


可以查看80端口被那些進程佔用
lsof -i:80


如果衝突則kill掉該進程即可

'''

 

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