为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

aluckdog 2021-11-16 14:29:37
我正在从 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() 以处理文件?谢谢你们。
查看完整描述

2 回答

?
慕神8447489

TA贡献1780条经验 获得超1个赞

路由是根据action给定的


<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>

这里动作被定义为上传,所以flask 寻找任何与动作上传链接的函数/url。


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

在 app.py 中,您可以找到一个名为 action 的函数,从而在那里执行该函数


@app.route('/upload', methods=['POST'])

def upload():

这也可能与您指定的方法不同。方法可以是GET、POST、PUT。


根据方法动作,可以修改功能


查看完整回答
反对 回复 2021-11-16
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

表单中的操作是通过 POST-Request 将您重定向到一个 url /upload:


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

现在,gist 中的 upload.html 定义了 /upload 路由:


@app.route('/upload', methods=['POST'])

下面的代码处理上传,比如从 post 请求中获取文件等等。


只需尝试一个简单的页面,单击提交,您就会看到发生了什么:


<html>

  <body>

    <form action="upload" method="post">

      <input type="submit" value="Submit" />

    </form>

  </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


查看完整回答
反对 回复 2021-11-16
  • 2 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信