Jsp 在会话中的servlet之间共享上载的文件

Jsp 在会话中的servlet之间共享上载的文件,jsp,servlets,Jsp,Servlets,我可以将上传的文件作为会话变量保存并在不同的JSP/servlet之间共享吗? (即,文件应可在除上传页面以外的其他页面中使用。) 或者是否需要将文件保存在服务器中? 或者还有别的办法吗?是的,有可能。只需将其存储在字节[]中,并将其另存为会话属性 byte[] fileContent = getItSomehow(); session.setAttribute("fileContent", fileContent); // ... 然而,您需要认识到,一个字节[]的每个字节都会有效地消耗服务

我可以将上传的文件作为会话变量保存并在不同的JSP/servlet之间共享吗? (即,文件应可在除上传页面以外的其他页面中使用。) 或者是否需要将文件保存在服务器中?
或者还有别的办法吗?

是的,有可能。只需将其存储在
字节[]
中,并将其另存为会话属性

byte[] fileContent = getItSomehow();
session.setAttribute("fileContent", fileContent);
// ...

然而,您需要认识到,一个
字节[]
的每个
字节都会有效地消耗服务器内存的一个字节。因此,如果您有100个同时的用户会话,每个会话只有一个10MB的大文件,那么已经有1GB的服务器内存被消耗掉了。当您的服务器内存不足且有大量访问者时,您将面临内存出错的风险。朝这个方向走之前要三思。

是的,这是可能的。只需将其存储在
字节[]
中,并将其另存为会话属性

byte[] fileContent = getItSomehow();
session.setAttribute("fileContent", fileContent);
// ...

然而,您需要认识到,一个
字节[]
的每个
字节都会有效地消耗服务器内存的一个字节。因此,如果您有100个同时的用户会话,每个会话只有一个10MB的大文件,那么已经有1GB的服务器内存被消耗掉了。当您的服务器内存不足且有大量访问者时,您将面临内存出错的风险。朝这个方向走之前要三思。

我的意思是保存到磁盘或保留在内存中?将其存储在磁盘文件系统上的临时文件夹中。ApacheCommonsFileUpload默认情况下已经对大于100KB的文件执行了此操作。另一方面,您可以使用
File#createTempFile()
进行更细粒度的控制。我的意思是保存到磁盘或保留在内存中?将其存储在磁盘文件系统上的临时文件夹中。ApacheCommonsFileUpload默认情况下已经对大于100KB的文件执行了此操作。另一方面,您可以使用
File#createTempFile()
来实现更细粒度的控制。