python flask创建服务器实现文件的上传下载

flask创建服务器实现和前端文件的上传下载,代码可以直接使用

一、前端代码

DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>flask模块前端测试界面title>
  <style>
    button,input{
      width: 130px;
      height: 30px;
      margin: 30px;
    }
  style>
head>
<body>
  <button onclick="download()">下载文件button>
  
  <form action="http://localhost:8080/upload" enctype='multipart/form-data' method="post">
    <input type="file" name="test_file">
    <button type="submit">开始上传button>
  form>
  <script>
    function download(){
      window.location.href = 'http://localhost:8080/download'
    }
  script>
body>
html>

二、后端代码(python)

import os
# from re import template
from string import Template
from flask import Flask, send_file,request,jsonify
# from werkzeug.utils import secure_filename
from flask_cors import CORS
import time
app = Flask(__name__)
absolute = os.path.dirname(__file__)
CORS(app)
app.debug = True
# 定义文件的保存路径和文件名尾缀
FOLDER = os.path.join(absolute, 'save_file')
HOST = "localhost"
PORT = 8080
UPLOAD = 'upload'
app.config['UPLOAD'] = UPLOAD
basedir = os.path.abspath(os.path.dirname(__file__))
ALLOWED_EXTENSIONS = set(['txt','png','xls','xlsx','jpeg','jpg'])
# 进行文件类型判断的函数
def allowed_file(filename):
  return '.' in filename and filename.rsplit('.',1)[1] in ALLOWED_EXTENSIONS
# 默认访问
@app.route('/')
def index():
  html = Template(
      """
  
  
      
        下载
        
上传 """
) html = html.substitute() return html # 下载 @app.route("/download") def download_file(): file_path = os.path.join(FOLDER, 'test.md') if os.path.isfile(file_path): return send_file(file_path, as_attachment=True) else: return "The downloaded file does not exist" # 上传 @app.route('/upload', methods=['post']) def upload_file(): file_dir = os.path.join(basedir,app.config['UPLOAD']) if not os.path.exists(file_dir): os.makedirs(file_dir) f = request.files['test_file'] if f and allowed_file(f.filename): fname = f.filename ext = fname.rsplit('.',1)[1] unix_time = int(time.time()) new_filename = str(unix_time) + '.' + ext f.save(os.path.join(file_dir,new_filename)) return jsonify({"state": 200, "data": "上传成功"}) else: return jsonify({"state": 500, "errmsg": "上传失败"}) if __name__ == '__main__': app.run(host=HOST, port=PORT)

三、后记
使用python中的flask模块作为服务器,并实现和前端的交互学习了两天,基本都是摸着石头过河,不会的只能百度,在百度上也是沙里淘金,很难从一个博主哪里得到完美的答案,都需要靠自己不停的琢磨。以上的代码很多都是百度出来然后自己慢慢去研究,也许像稻盛和夫所说的,当你努力到无能为力的时候,神也会出手帮助你。因此,保持着一直努力学习的姿态才是编程最大的魅力所在,世上没有天才,如果有,那应该也是踩在了巨人的肩膀上或者付出了别人没有看到的努力。但是从现实中来看,后者无疑是最重要的。编程没有35岁的门槛,只有你有没有继续前进的意愿和精力

你可能感兴趣的:(python,前端,flask,python,服务器)