2017-07-17 137 views
-1

我上傳Servlet中的文件,對此文件進行必要的操作,然後將此處理的文件下載到客戶端。我有兩種形式multipart/form-data。第一個使用post方法上傳文件。第二個是使用get方法下載文件。如何防止多個用戶訪問相同的文件

DoPost() - >用戶選擇並上傳文件。該文件被處理並存儲在指定的位置。這個文件保存爲File類型的全局變量。

DoGet() - >下載全球File

當用戶從Web瀏覽器上傳文件時,另一個用戶可以從另一個Web瀏覽器下載。 我想這可能是File是全局的原因。我試過ThreadLocal,但它不起作用,因爲doPostdoGet不在同一個線程中。

你有什麼建議嗎?

+0

爲了澄清,我是否正確,您希望該文件只能用於上傳? – MartinByers

+0

是的,只有上傳者。 – cezaalp

+0

你的問題不是關於多個線程。這是關於多個*用戶。* – EJP

回答

0

如果用戶將在同一個會話中上傳和下載文件,那麼您可以在POST操作期間將文件名保存在HttpSession中。在GET期間,您檢查HttpSession中是否存在。讓用戶只有在HttpSession中存在的情況下才能下載該文件。

如果用戶可能已上傳文件,然後註銷並重新登錄並下載文件,則需要將文件信息保存在某個持久性存儲中,如數據庫。

0

你是正確的每個請求是一個不同的線程,但他們應該鏈接到同一session.Store您的文件在會話中,所有將被排序。

相關問題