运行
python main.py

访问
http://127.0.0.1:8987/upimg


纯图片
main.py
# coding:utf-8
from flask import Flask, render_template, request, redirect, url_for, make_response,jsonify
from werkzeug.utils import secure_filename
import os
import cv2
import time
from datetime import timedelta
#设置允许的文件格式
ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG', 'PNG', 'bmp'])
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
app = Flask(__name__)
# 设置静态文件缓存过期时间
app.send_file_max_age_default = timedelta(seconds=1)
# @app.route('/upload', methods=['POST', 'GET'])
@app.route('/upimg', methods=['POST', 'GET']) # 添加路由
def upload():
#第一次访问直接返回upload.html
if request.method == 'POST':# 上传图片返回upload_ok.html
f = request.files['file']
if not (f and allowed_file(f.filename)):
return jsonify({"error": 1001, "msg": "请检查上传的图片类型,仅限于png、PNG、jpg、JPG、bmp"})
user_input = request.form.get("name")
basepath = os.path.dirname(__file__) # 当前文件所在路径
upload_path = os.path.join(basepath, 'static/images', secure_filename(f.filename)) # 注意:没有的文件夹一定要先创建,不然会提示没有该路径
# upload_path = os.path.join(basepath, 'static/images','test.jpg') #注意:没有的文件夹一定要先创建,不然会提示没有该路径
f.save(upload_path)
# 使用Opencv转换一下图片格式和名称
img = cv2.imread(upload_path)
cv2.imwrite(os.path.join(basepath, 'static/images', 'test.jpg'), img)
return render_template('upload_ok.html',userinput=user_input,val1=time.time())
# image_data = open(upload_path, "rb").read()
# response = make_response(image_data)
# response.headers['Content-Type'] = 'image/png'
# return response
return render_template('upload.html')
if __name__ == '__main__':
# app.debug = True
app.run(host='0.0.0.0', port=8987, debug=True)
图片 和mp3
# coding:utf-8
from flask import Flask, render_template, request, redirect, url_for, make_response,jsonify
from werkzeug.utils import secure_filename
import os
import cv2
import time
from datetime import timedelta
#设置允许的文件格式
ALLOWED_EXTENSIONS = set(['png', 'jpg', 'JPG', 'PNG', 'bmp','mp3','wav'])
TYPE_IMG = set(['png', 'jpg', 'JPG', 'PNG', 'bmp'])
TYPE_VIDEO = set(['mp3','wav'])
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
app = Flask(__name__)
# 设置静态文件缓存过期时间
app.send_file_max_age_default = timedelta(seconds=1)
# @app.route('/upload', methods=['POST', 'GET'])
@app.route('/upimg', methods=['POST', 'GET']) # 添加路由
def upload():
#第一次访问直接返回upload.html
if request.method == 'POST':# 上传图片返回upload_ok.html
f = request.files['file']
filename = f.filename
filetype = filename.rsplit('.', 1)[1]
print("文件名",filename,'文件格式',filetype)
if not (f and allowed_file(filename)):
return jsonify({"error": 1001, "msg": "请检查上传的文件类型,仅限于png、PNG、jpg、JPG、bmp、mp3"})
user_input = request.form.get("name")
print("")
basepath = os.path.dirname(__file__) # 当前文件所在路径
if filetype in TYPE_IMG:
upload_path = os.path.join(basepath, 'static/images', secure_filename(f.filename)) # 注意:没有的文件夹一定要先创建,不然会提示没有该路径
uploaddir_path = os.path.join(basepath, 'static/images','')
if not os.path.exists(uploaddir_path):
print("不存在创建根目录")
os.makedirs(uploaddir_path)
# upload_path = os.path.join(basepath, 'static/images','test.jpg') #注意:没有的文件夹一定要先创建,不然会提示没有该路径
f.save(upload_path) # upload_path 保存原名
# 使用Opencv转换一下图片格式和名称
#img = cv2.imread(upload_path)
#cv2.imwrite(os.path.join(basepath, 'static/images', 'test.jpg'), img)
'''
userinput - 网页输入的文本
val1 - 时间戳判定是否超时
filename - 文件名字
'''
return render_template('upload_ok.html',userinput=user_input,val1=time.time(),file_name=filename)
#return jsonify({"errno": 0, "msg": "上传成功"})
# image_data = open(upload_path, "rb").read()
# response = make_response(image_data)
# response.headers['Content-Type'] = 'image/png'
# return response
elif filetype in TYPE_VIDEO:
uploaddir_path = os.path.join(basepath, 'static/mp3','')
if not os.path.exists(uploaddir_path):
print("不存在创建根目录")
os.makedirs(uploaddir_path)
upload_path = os.path.join(basepath, 'static/mp3', filename) # 注意:没有的文件夹一定要先创建,不然会提示没有该路径
# upload_path = os.path.join(basepath, 'static/images','test.jpg') #注意:没有的文件夹一定要先创建,不然会提示没有该路径
print("上传音频位置",upload_path)
f.save(upload_path) # upload_path 保存原名
return "上传音频成功:"+filename
return render_template('upload.html')
#return jsonify({"errno": 1, "msg": "file suffix not allowed "})
if __name__ == '__main__':
# app.debug = True
app.run(host='0.0.0.0', port=8888, debug=True)

templates
upload.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传文件系统</title>
</head>
<body>
<h1>上传文件</h1>
<form action="" enctype='multipart/form-data' method='POST'>
<input type="file" name="file" style="margin-top:20px;"/>
<br>
<i>请输入:</i>
<input type="text" class="txt_input" name="name" value="" style="margin-top:10px;"/>
<input type="submit" value="上传" class="button-new" style="margin-top:15px;"/>
</form>
</body>
</html>
upload_ok.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>上传文件系统</title>
</head>
<body>
<h1>上传文件</h1>
<form action="" enctype='multipart/form-data' method='POST'>
<input type="file" name="file" style="margin-top:20px;"/>
<br>
<i>请输入:</i>
<input type="text" class="txt_input" name="name" value="" style="margin-top:10px;"/>
<input type="submit" value="上传" class="button-new" style="margin-top:15px;"/>
</form>
<h1>图片上传成功{{userinput}}!</h1>
<img src="{{ url_for('static', filename= './images/'+file_name,_t=val1) }}" width="640" height="480" alt="你的图片被外星人劫持了~~"/>
</body>
</html>
static/images

第一个是上传的原图
test是用于返回网页使用的照片
浙公网安备 33010602011771号