2012-02-04 80 views
0

我有我的网页上一个简单的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> 

现在什么,我试图完成(与西纳特拉)是检查PIN进入表单域是正确的:

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

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

有没有办法在文件上传开始之前做些什么?如果没有,还有什么其他的方法可以做到呢?

回答

1

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

这将是我的解决方案。