在struts2中可以通过
Map map = ActionContext.getContext().getParameters();
来获得表单中的数据信息,但当提交的表单格式为enctype="multipart/form-data",即在上传文件时通过上面的方式却得不到数据,在不在对应action中声明文件字段的情况下,如何获得struts2已经封装好了的文件及其他字段信息。
在struts2中确实会自动用common-fileupload把要上传的文件先传到服务器上的临时目录,我的问题是怎样在 不在action或实体中声明该字段的情况下获得该上传文件的信息,就像不在form表单中声明enctype="multipart/form-data",但能获得form表单的上传数据:Map map = ActionContext.getContext().getParameters()。
谢谢
struts2在上传文件时获得请求参数的问题
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- ChatGPTᴼᴾᴱᴺᴬᴵ 2023-01-06 09:51关注
在 Struts 2 中,你可以通过使用 ActionContext 的 getParameters 方法来获取表单中的所有数据。但是,当表单的 enctype 设置为 multipart/form-data 时,表单中的文件将以二进制形式提交,而 getParameters 方法只能处理字符串类型的数据。因此,你不能使用 getParameters 方法来获取上传文件的信息。
要获取上传文件的信息,你可以使用 Struts 2 的文件上传功能。首先,你需要在 struts.xml 文件中配置文件上传拦截器,然后在 Action 类中添加文件类型的属性以及相应的 getter 和 setter 方法。例如:
private File file; // 文件类型的属性 private String fileContentType; // 文件类型的属性 private String fileFileName; // 文件名的属性 public File getFile() { return file; } public void setFile(File file) { this.file = file; } public String getFileContentType() { return fileContentType; } public void setFileContentType(String fileContentType) { this.fileContentType = fileContentType; } public String getFileFileName() { return fileFileName; } public void setFileFileName(String fileFileName) { this.fileFileName = fileFileName; }
在表单中,你需要指定文件上传域的名称为 file,例如:
<form action="upload" method="post" enctype="multipart/form-data"> <input type="file" name="file" /> <input type="submit" value="Upload" /> </form>
在表单提交时,Struts 2 会自动将上传的文件信息封装到 Action 类的属性中,例如我们上面提到的 file、fileContentType 和 fileFileName 属性。这些属性的值都可以在 Action 类的方法中使用。
如果你想要在 Action 类的方法中获取上传文件的信息,你可以使用这些属性来获取文件对象、文件类型和文件名。例如:
File file = getFile(); // 获取文件对象 String fileContentType = getFileContentType(); // 获取文件类型 String fileFileName = getFileFileName(); // 获取文件名
你也可以使用 ServletActionContext 类的 getRequest() 方法来获取 HttpServletRequest 对象,然后使用该对象的 getParameter 方法来获取表单中的其他字段信息。例如:
HttpServletRequest request = ServletActionContext.getRequest(); String field1 = request.getParameter("field1"); // 获取表单中名为 "field1" 的字段的值 String field2 = request.getParameter("field2"); // 获取表单中名为 "field2" 的字段的值
解决 无用评论 打赏 举报
悬赏问题
- ¥15 jupyterthemes 设置完毕后没有效果
- ¥15 matlab图像高斯低通滤波
- ¥15 针对曲面部件的制孔路径规划,大家有什么思路吗
- ¥15 钢筋实图交点识别,机器视觉代码
- ¥15 如何在Linux系统中,但是在window系统上idea里面可以正常运行?(相关搜索:jar包)
- ¥50 400g qsfp 光模块iphy方案
- ¥15 两块ADC0804用proteus仿真时,出现异常
- ¥15 关于风控系统,如何去选择
- ¥15 这款软件是什么?需要能满足我的需求
- ¥15 SpringSecurityOauth2登陆前后request不一致