本文章代码上传在码云上
代码地址
git@gitee.com:DanYuJie/upanddown.git
这里我们使用flask框架,简单实用
目录结构:
upandown/static/css/js/jquery.min.jstoastr.min.jstemplates/index.htmltest.py
首先我们需要一个页面在templates/index.html(这里使用form表单实现)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><link rel="stylesheet" href="../static/css/toastr.min.css"><script src="../static/js/jquery.min.js"></script><script src="../static/js/toastr.min.js"></script><title>Document</title>
</head>
<body><form method="POST" action="/upload" enctype="multipart/form-data"><input type="file" name="file" id="file"><input type="submit" value="upload"><a href=""></a></form><hr><ol id="filelist"></ol><script>function checkstatus(){if('{{status}}'== 'OK'){toastr['success']("上传成功");}else if('{{status}}'== 'null'){toastr['error']("上传失败"); }}function get_list(){$.ajax({url:'/getlist',type:'GET',success:function(result){len_result = result.length;for(var x =0; x < len_result; x++){$("#filelist").append('<br><a href=/download/' + result[x] + '>' + result[x] +'</a>');}alert(content_list);},error:function(){alert("失败");}});}checkstatus();get_list();</script>
</body>
</html>
然后是后台接收
test.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
from flask import Flask,render_template, request, send_from_directory,jsonify, redirect
import os
# import sys
# reload(sys)
# sys.setdefaultencoding('utf-8')
app = Flask(__name__)# ALLOWED_EXTENSTIONS = set(['png', 'jpg', 'jpeg', 'gif'])
app.config['UPLOAD_FOLDER'] = os.getcwd()
download_floder = app.config['UPLOAD_FOLDER'] + '/upload'def allow_file(filename):allow_list = ['png', 'PNG', 'jpg', 'doc', 'docx', 'txt', 'pdf', 'PDF', 'xls', 'rar', 'exe', 'md', 'zip'] a = filename.split('.')[1]if a in allow_list:return Trueelse:return False@app.route('/main')
def home():return render_template('index.html')@app.route('/getlist')
def getlist():file_url_list = []file_floder = app.config['UPLOAD_FOLDER'] + '/upload'file_list = os.listdir(file_floder)for filename in file_list:file_url = url_for('download',filename=filename)file_url_list.append(file_url)# print file_listreturn jsonify(file_list)@app.route('/download/<filename>')
def download(filename):return send_from_directory(download_floder,filename, as_attachment=True)@app.route('/upload', methods=['POST', 'GET'])
def upload():file = request.files['file']if not file:return render_template('index.html', status='null')# print type(file)if allow_file(file.filename):file.save(os.path.join(app.config['UPLOAD_FOLDER']+'/upload/', file.filename))return render_template('index.html', status='OK')else:return 'NO'if __name__ == '__main__':app.run(debug=True, host='0.0.0.0')
作者:LanceAdd
链接:https://www.jianshu.com/p/fbcd1760cae0
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。