Python Flask Upload Files

##################################################################################

##                                                     目录

##################################################################################

UploadFileRef

        app.py

        static

                favicon.ico

        templates

                index.html

                upload.html

        uploads



##################################################################################

##                                                     app.py

##################################################################################


import os
# 渲染HTML模板,从flask使用请求对象,访问通过POST发送的数据。
# 重定向和url_for 用于一旦上传成功,重定向用户,
# send_from_directory有助于我们在浏览器send/show用户上传的文件。
from flask import Flask, render_template, request, redirect, url_for, send_from_directory
from werkzeug import secure_filename
# 初始化Flask应用程序
app = Flask(__name__)
# 上传文件存放的路径
app.config['UPLOAD_FOLDER'] = 'uploads/'
# 设置允许上传文件的扩展名(可以自行添加)
app.config['ALLOWED_EXTENSIONS'] = set(['txt', 'pdf', 'png', 'jpg', 'jpeg', 'gif'])
# 判断文件名带点并且扩展名是允许的名称
def allowed_file(filename):
  return '.' in filename and \
      filename.rsplit('.', 1)[1] in app.config['ALLOWED_EXTENSIONS']
# 该路由显示一个表单,jQuery执行一个AJAX request
# 装载jQuery,执行请求,执行上传操作
@app.route('/')
def index():
  return render_template('index.html')
 
# 这个路由处理文件上传
@app.route('/upload', methods=['POST'])
def upload():
  # 获得上传文件的名称
  uploaded_files = request.files.getlist("file[]")
  filenames = []
  for file in uploaded_files:
    # 检查文件是否是允许上传的文件
    if file and allowed_file(file.filename):
      # 产生安全的文件名,移除不支持的字符
      filename = secure_filename(file.filename)
      # 移动文件,从临时目录到我们创建的上传目录
      file.save(os.path.join(app.config['UPLOAD_FOLDER'],filename))
      # 保存文件名到列表,后面我们需要使用它
      filenames.append(filename)
      # 重定向用户到uploaded_file路由,它
      # 在浏览器上显示基本的文件上传信息
  # 用一个链接,每个已经装载的文件,装载一个html页面。
  return render_template('upload.html', filenames=filenames)
 
# 该路由需要一个包含文件名的参数。
# 然后定位上传目录的文件,在浏览器上显示出来,
# 因此用户上传一个图像,那么这个图像在上传后可以显示
@app.route('/uploads/<filename>')
def uploaded_file(filename):
  return send_from_directory(app.config['UPLOAD_FOLDER'],
                filename)


if __name__ == '__main__':
  app.run(
    host="0.0.0.0",
    port=int("80"),
    debug=True
  )



##################################################################################

##                                                    templates/index.html

##################################################################################

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">

<link rel="shortcut icon" href="static/favicon.ico" type="image/x-icon"/>
<link rel="icon" href="static/favicon.ico" type="image/x-icon"/>

<title>Python Upload File</title>
</head>
<body>

<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="file[]" size="50"  multiple/> <br />
<input type="submit" value="上传文件" />
</form>

</body>
</html>


##################################################################################

##                                                   templates/upload.html

##################################################################################


<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">

<link rel="shortcut icon" href="static/favicon.ico" type="image/x-icon"/>
<link rel="icon" href="static/favicon.ico" type="image/x-icon"/>

<title>Python Upload File</title>
</head>
<body>

<h2>上传的文件是</h2>
{% for filename in filenames%}
<p>{{ filename }}</p>
{% endfor %}
</body>
</html>






  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值