【问题标题】:Sinatra execute code before uploadingSinatra 在上传前执行代码
【发布时间】:2012-02-26 14:28:19
【问题描述】:

我的页面上有一个简单的 HTML 表单,如下所示:

<form action="/" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="input" name="pin" />
    <input type="submit" value="Upload" />
</form>

现在我想要完成(使用 Sinatra)是检查输入到表单字段中的 PIN 是否正确:

post "/" do
    if params[:pin] == "1234"
        start_upload()
    else
        print_error_message()
    end
end

当然,我希望在文件开始上传之前检查 PIN。但这是我的问题。单击“上传”按钮后,文件上传立即开始,直到完成。然后脚本会检查 PIN 是否有效。

有没有办法在文件上传开始之前做一些事情?如果没有,还有哪些其他方法可以做到这一点?

【问题讨论】:

    标签: forms file post upload sinatra


    【解决方案1】:

    除非您使用一些 Ajax 并拆分您的请求,否则这是行不通的。您可以有两种形式,一种是持有 pin 的形式,一种是授权用户的形式。一旦你输入了正确的密码,你就会向服务器发送一个异步请求,然后服务器会回复一个肯定或否定的答案。根据响应,一些 javascript 将启用您的文件上传按钮,以便您可以开始上传文件。您还应该为用户设置会话,以便仅允许授权用户(通过 pin)发送表单。如果您查看 Sinatra 自述文件,您可以找到一些有关如何执行此操作的信息。

    这将是我的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-01
      • 2016-12-25
      • 2021-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多