新購一個遠程主機,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掉該進程即可
'''