当用户从索引页面点击“上传”时发生了什么?

我正在从 Liu Lixiang 的这个存储库中学习一些代码,我想知道它实际上是如何工作的。


源码在这里:https : //gist.github.com/liulixiang1988/cc3093b2d8cced6dcf38


首先,当我进入主页(index.html)。它会提示我上传文件的页面。


<!DOCTYPE html>

<html>

<head>

<link href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"

      rel="stylesheet">

</head>

<body>

<div class="container">

      <div class="header">

        <h3 class="text-muted">How To Upload a File</h3>

      </div>

      <hr/>

      <div>


      <form action="upload" method="post" enctype="multipart/form-data">

        <input type="file" multiple="" name="file[]" class="span3" /><br />

        <input type="submit" value="Upload"  class="span2">

      </form>

      </div>

    </div>

  </body>

</html>

当我单击“提交”时,它如何将我链接到 app.py 中的函数 upload() 以处理文件?


谢谢你们。


aluckdog
浏览 178回答 2
2回答

慕神8447489

路由是根据action给定的<form action="upload" method="post" enctype="multipart/form-data"><input type="file" multiple="" name="file[]" class="span3" /><br /><input type="submit" value="Upload"&nbsp; class="span2"></form>这里动作被定义为上传,所以flask 寻找任何与动作上传链接的函数/url。<form action="upload" method="post" enctype="multipart/form-data">在 app.py 中,您可以找到一个名为 action 的函数,从而在那里执行该函数@app.route('/upload', methods=['POST'])def upload():这也可能与您指定的方法不同。方法可以是GET、POST、PUT。根据方法动作,可以修改功能

慕虎7371278

表单中的操作是通过 POST-Request 将您重定向到一个 url /upload:<form action="upload" method="post" enctype="multipart/form-data">现在,gist 中的 upload.html 定义了 /upload 路由:@app.route('/upload', methods=['POST'])下面的代码处理上传,比如从 post 请求中获取文件等等。只需尝试一个简单的页面,单击提交,您就会看到发生了什么:<html>&nbsp; <body>&nbsp; &nbsp; <form action="upload" method="post">&nbsp; &nbsp; &nbsp; <input type="submit" value="Submit" />&nbsp; &nbsp; </form>&nbsp; </body></html>将其另存为 html 文件,在浏览器中打开它并单击提交。您将在浏览器的地址栏中看到“上传”作为路由目标。POST 请求尝试访问此资源,示例中的 upload.html 会处理此问题。另外,app.py中的注释做了部分说明:# We'll render HTML templates and access data sent by POST# using the request object from flask. Redirect and url_for# will be used to redirect the user once the upload is done# and send_from_directory will help us to send/show on the# browser the file that the user just uploaded
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python