美文网首页
Flask 文件上传(含前端)

Flask 文件上传(含前端)

作者: 会爬虫的小蟒蛇 | 来源:发表于2022-10-05 00:22 被阅读0次

    HTML

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="./style.css"/>
    </head>
    <body>
    <div class="load-body">
    
        <div class="wrapper">
            <header>File Uploader JavaScript</header>
            <form action="#">
                <input class="file-input" type="file" name="file" hidden>
                <i class="fas fa-cloud-upload-alt"></i>
                <p>Browse File to Upload</p>
            </form>
            <section class="progress-area"></section>
            <section class="uploaded-area"></section>
        </div>
    
    
    </div>
    </body>
    <script src="./jquery.js"></script>
    <script src="./script.js"></script>
    </html>
    

    JS

    const form = document.querySelector("form"),
    fileInput = document.querySelector(".file-input"),
    progressArea = document.querySelector(".progress-area"),
    uploadedArea = document.querySelector(".uploaded-area");
    
    // form click event
    form.addEventListener("click", () => {
        fileInput.click();
    });
    
    fileInput.onchange = ({target}) => {
    let file = target.files[0]; //getting file [0] this means if user has selected multiple files then get first one only
    var data = new FormData();
    data.append('avatar', file);
    $.ajax({
            url: 'http://127.0.0.1:5000/file_uploader',
            type: 'POST',
            data: data,
            cache: false,
            processData: false,
            contentType: false,
            success: function(data, textStatus) {
                progressArea.innerHTML = "";
                let uploadedHTML = `<li class="row">
                                       ${file.name}上传完成 -> ${data}
                              </li>`;
                // uploadedArea.innerHTML = uploadedHTML; //uncomment this line if you don't want to show upload history
                uploadedArea.insertAdjacentHTML("afterbegin", uploadedHTML);
            }
        },
    )
    }
    

    CSS

    
    .load-body{
      height: 1000px;
      margin: 0;
      padding: 0;
      box-sizing: border-box;
      font-family: "Poppins", sans-serif;
      display: flex;
      align-items: center;
      justify-content: center;
      min-height: 100vh;
      background: #6990F2;
    }
    
    
    ::selection{
      color: #fff;
      background: #6990F2;
    }
    .wrapper{
      width: 430px;
      background: #fff;
      border-radius: 5px;
      padding: 30px;
      box-shadow: 7px 7px 12px rgba(0,0,0,0.05);
    }
    .wrapper header{
      color: #6990F2;
      font-size: 27px;
      font-weight: 600;
      text-align: center;
    }
    .wrapper form{
      height: 167px;
      display: flex;
      cursor: pointer;
      margin: 30px 0;
      align-items: center;
      justify-content: center;
      flex-direction: column;
      border-radius: 5px;
      border: 2px dashed #6990F2;
    }
    form :where(i, p){
      color: #6990F2;
    }
    form i{
      font-size: 50px;
    }
    form p{
      margin-top: 15px;
      font-size: 16px;
    }
    
    section .row{
      margin-bottom: 10px;
      background: #E9F0FF;
      list-style: none;
      padding: 15px 20px;
      border-radius: 5px;
      display: flex;
      align-items: center;
      justify-content: space-between;
    }
    

    Flask

    @app.route("/file_uploader", methods=["POST"])
    def read_asset():
        # 获取普通参数
        print(f"request.values: {request.values}")
        print(f"request.values.get('name'): {request.values.get('name')}")
        
        # 获取文件类型的参数
        print(f"request.files: {request.files}")
        print(f"request.files.get('avatar'): {request.files.get('avatar')}")
        # 获取上传文件的二进制流
        print(f"request.files.get('avatar').read(): {request.files.get('avatar').read()}")
        # request.files["avatar"].stream.read()
        return "sesscs"
    
    if __name__ == '__main__':
        app.run()
    

    相关文章

      网友评论

          本文标题:Flask 文件上传(含前端)

          本文链接:https://www.haomeiwen.com/subject/vncmartx.html