脚本宝典收集整理的这篇文章主要介绍了20、上传文件,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
upload.htML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<tITle>文件上传</title>
<style type="text/css">
.div1 {
height: 180px;
width: 380px;
border: 1px solid #8a8989;
margin: 0 auto;
}
.input {
display: block;
width: 250px;
height: 30px;
margin: 10px auto;
}
.button {
background: #2066c5;
color: white;
font-Size: 18px;
font-weight: bold;
height: 30px;
border-radius: 4px;
}
</style>
</head>
<body>
<div class="div1">
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="file" class="input" />
<input type="submit" value="上传" class="input button" />
</form>
</div>
</body>
</html>
form.py
# -*- coding:utf-8 -*-
From wtforms import Form, FileField
from flask_wtf.file import FileRequired, FileAllowed
class UploaDForm(Form):
file = FileField(validators=[
FileRequired(), # FileRequired必须上传
FileAllowed(['jpg', 'png', 'gif']) # FileAllowed:必须为指定的格式的文件
])
from flask import Flask, render_template, request, send_from_directory
import time
import os
from os import path
from werkzeug.utils import secure_filename
import platform
from form import UploadForm
from werkzeug.datastructures import CombinedMultiDict
app = Flask(__name__)
# 判断不同系统下使用不同的文件分隔符
if platform.System() == "Windows":
slash = '\'
else:
platform.system() == "Linux"
slash = '/'
# 文件存储路径 = 根目录 + 分隔符 + 'uploads' + 分隔符
UPLOAD_PATH = os.path.curdir + slash + 'uploads' + slash
@app.route('/', methods=['POST', 'GET'])
def hello_world(): # 如果收到 GET 请求则跳转到上传文件界面
if request.method == 'GET':
return render_template('upload.html')
else: # 如果收到 POST 请求则返回响应
if not os.path.exists(UPLOAD_PATH): # 没有目录则创建目录
os.makedirs(UPLOAD_PATH)
# 将表单和文件一起实例化
form = UploadForm(CombinedMultiDict([request.form, request.files]))
if form.validate():
f = request.files['file']
filename = secure_filename(f.filename) # 取得文件名字
ext = filename.rsplit('.', 1)[1] # 获取文件后缀
unix_time = int(time.time()) # 获取上传文件时的时间戳
new_filename = str(unix_time) + '.' + ext # 对文件进行重新命名
file_url = UPLOAD_PATH + new_filename
PRint(new_filename) # 输出新文件名
print(UPLOAD_PATH) # 输出文件夹路径
print(file_url) # 输出文件路径
f.save(path.join(UPLOAD_PATH, new_filename)) # 保存文件
return "上传文件成功!!"
else:
return "只支持jpg、png以及gif格式的文件!"
# 访问上传的文件
# 浏览器访问:http://127.0.0.1:5000/images/xxx.jpg/ 就可以查看文件了
@app.route('/images/<filename>/', methods=['GET', 'POST'])
def get_image(filename):
dirpath = os.path.join(
app.root_path, 'uploads') # 得到文件路径
print(dirpath)
print(filename)
# 也可以为下载方式: return send_from_directory(dirpath,filename,as_attachment=True)
return send_from_directory(dirpath, filename) # 为在线浏览方式
if __name__ == '__main__':
app.run(debug=True)
https://weread.QQ.COM/web/reader/0a932660718ac6bc0a9702e
以上是脚本宝典为你收集整理的20、上传文件全部内容,希望文章能够帮你解决20、上传文件所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。