Sinatra在上传之前执行代码

时间:2012-02-04 01:32:30

标签: forms file post upload sinatra

我的页面上有一个简单的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是否有效。

在文件上传开始之前有没有办法做事?如果没有,还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

除非您使用某些Ajax并拆分您的请求,否则无效。您可以有两个表单,一个用于保存引脚并授权用户。输入正确的PIN后,您会向服务器发送一个asyn请求,然后回复肯定或否定的答案。根据响应,一些javascript将启用您的文件上传按钮,以便您可以开始上传文件。您还应该做的是为用户设置会话,以便只允许授权用户(通过引脚)发送表单。如果您查看Sinatra自述文件,您可以找到有关如何执行此操作的一些信息。

那将是我的解决方案。

相关问题