2012-02-04 118 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自述文件,您可以找到一些關於如何做到這一點的信息。

這將是我的解決方案。