Python代码
#encoding:utf-8
#!/usr/bin/env python
from werkzeug.utils import secure_filename
from flask import Flask, render_template, jsonify, request, make_response, send_from_directory, abort
import os
app = Flask(__name__)
UPLOAD_FOLDER = 'upload'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
basedir = os.path.abspath(os.path.dirname(__file__))
ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG', 'PNG', 'gif', 'GIF'])
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
@app.route('/')
def upload_test():
ip = request.remote_addr
print(ip)
return render_template('up.html')
# 上传文件
@app.route('/up_photo', methods=['post'], strict_slashes=False)
def api_upload():
ip = request.remote_addr
file_dir = os.path.join(basedir, app.config['UPLOAD_FOLDER'],ip)
if not os.path.exists(file_dir):
os.makedirs(file_dir)
f = request.files['photo']
if f and allowed_file(f.filename):
fname = secure_filename(f.filename)
print (fname,f.filename,file_dir)
f.save(os.path.join(file_dir, f.filename))
return render_template('up.html',name="已成功上传:"+f.filename)
else:
return jsonify({"error": 1001, "msg": "file type error"})
@app.route('/download/<string:filename>', methods=['GET'])
def download(filename):
ip = request.remote_addr
filename = ip + "/" + filename
if request.method == "GET":
if os.path.isfile(os.path.join('upload', filename)):
return send_from_directory('upload', filename, as_attachment=True)
else:
return jsonify({"error": 1001, "msg": filename + " not exist!"})
# show photo
@app.route('/show/<string:filename>', methods=['GET'])
def show_photo(filename):
file_dir = os.path.join(basedir, app.config['UPLOAD_FOLDER'])
if request.method == 'GET':
if filename is None:
pass
else:
image_data = open(os.path.join(file_dir, '%s' % filename), "rb").read()
response = make_response(image_data)
response.headers['Content-Type'] = 'image/png'
return response
else:
pass
if __name__ == '__main__':
app.run(threaded=True)
网页代码
up.html 注意放到templates目录下,具体代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<div>
<form method="post" action="http://localhost:5000/up_photo" enctype="multipart/form-data">
<input type="file" size="30" name="photo" id="photo_name" required="required" />
<br>
<br>
<input type="submit" value="上传处理" class="button-new" style="margin-top:15px;" />
</form>
<label id="return_photo_name">{{ name }}</label>
<br>
<input type="submit" value="下载AI放大图片" onclick="down_img()" style="margin-top:15px;" />
</div>
</body>
<script>
function down_img() {
// var file_name = document.getElementById('photo_name').files[0].name;
var return_file_name = document.getElementById('return_photo_name').innerText.trim();
return_file_name = return_file_name.replace("已成功上传:", "");
// alert("return_file_name is : " + return_file_name);
if (return_file_name == "") {
alert("请先上传图片");
return;
}
else {
window.location.href = "http://localhost:5000/download/" + return_file_name;
}
// alert("Hello, World!" + file_name);
}
</script>
</html>