我正在Servlet
上传文件,对此文件执行必要的操作,然后将此处理后的文件下载到客户端。
我有两种形式multipart / form-data
。第一个使用post方法上传文件。第二个是使用get方法下载文件。
DoPost ()
- >用户选择并上载文件。处理此文件并将其存储在指定位置。此文件保存为File
类型的全局变量。
DoGet ()
- >下载全局File
。
当用户从Web浏览器上传文件时,其他用户可以从其他Web浏览器下载该文件。
我想这可能是File是全局的原因。我尝试了ThreadLocal
,但由于doPost
和doGet
不在同一个帖子中,因此无效。
有没有办法建议?
答案 0 :(得分:0)
如果用户将在同一会话中上传和下载文件,则可以在POST操作期间将文件名保存在HttpSession中。在GET期间,您检查HttpSession中是否存在。只有在HttpSession中存在文件时,才允许用户下载文件。
如果用户可以上传文件,然后注销并重新登录并下载文件,那么您需要将文件信息保存在某些持久性存储中,如数据库。
答案 1 :(得分:0)
您是正确的每个请求都是一个不同的线程,但是它们应该链接到同一个会话。在会话中存储您的文件,所有请求都将被排序。