我的页面上有一个简单的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是否有效。
在文件上传开始之前有没有办法做事?如果没有,还有其他方法吗?
答案 0 :(得分:1)
除非您使用某些Ajax并拆分您的请求,否则无效。您可以有两个表单,一个用于保存引脚并授权用户。输入正确的PIN后,您会向服务器发送一个asyn请求,然后回复肯定或否定的答案。根据响应,一些javascript将启用您的文件上传按钮,以便您可以开始上传文件。您还应该做的是为用户设置会话,以便只允许授权用户(通过引脚)发送表单。如果您查看Sinatra自述文件,您可以找到有关如何执行此操作的一些信息。
那将是我的解决方案。