gpt4 book ai didi

java - Struts2文件上传错误

转载 作者:行者123 更新时间:2023-12-01 14:11:04 26 4
gpt4 key购买 nike

我正在使用 struts2 文件上传,我的操作类包含 3 个带有 getter 和 setter 的私有(private)文件

private File myFile;
private String myFileFileName;
private String myFileContentType;

我有一些问题需要澄清

  1. 我们只传递文件作为参数并将其绑定(bind)到myFile,那么应用程序如何获取文件名和内容类型?

  2. 每当我使用 myFileVariableName + "FileName"(如果文件变量是 myFile 那么文件名变量是 myFileFileName,如果文件是 xxx,那么文件名是 xxxFileName),如果我做出任何输出,我都会得到输出更改为这种格式(即,myFileVariableName +“FileName”),它变为空。是否强制使用此格式?我可以将其更改为我想要的任何名称吗?如果是这样,那么如何?

  3. 要获取内容类型,我应该使用 jst "contentType"或 myfileVariableName + "contentType"。这也是强制性的吗?

  4. 我假设,如果我使用单独的 bean 来存储请求变量,则所有参数都会绑定(bind)到该 bean 变量。但在文件上传的情况下,只有文件变量,即本例中的 myFile 只能在 bean 中获取和设置。 fileFileName 和 contentType 为空。如果我直接在操作类中声明这些变量,那么我会得到这些值,但是每当我使用单独的 bean 时,只有 File 变量可以获取和设置,其他两个变量为 null。为什么?

  5. 如果我使用 ModelDriven,同样的情况也会发生,我只能获取 File 变量,其他两个变量为 null。为什么?

我只扩展了 struts.xml 中的“struts-default”,没有单独的文件上传配置,因为它在我的问题中没有显示任何效果。

最佳答案

Action类用于文件上传,声明一个File变量来存储用户上传的文件,两个String变量来存储文件名和内容类型。 fileUpload 拦截器将通过 set 'X' ContentType() 和 set 自动注入(inject)上传的文件详细信息>'X' FileName(),确保方法名称拼写正确。

The file upload function is depends on the “fileUpload Interceptor“, make sure it is included in the Action’s stack. The lucky is, the default stack is already includes the “fileUpload Interceptor“.

字段userImageContentTypeuserImageFileName是可选的。如果提供了这些字段的setter方法struts2将设置数据。这只是为了获取上传文件的一些额外信息。如果您提供内容类型和文件名字符串,还请遵循命名标准。名称应为 ContentTypeFileName

For example if the file attribute in action file is private File uploadedFile, the content type will be uploadedFileContentType and file name uploadedFileFileName.

Struts 2 中的获取设置行为:为变量分配值,而不是属性值。例如,

public class SetTagAction extends ActionSupport{

private String msg;

public String setMsg(String msg) {
this.msg = msg;
}
<s:set var="msg" value="%{'this is a message'}" />

许多 Struts 2 开发人员认为 set 标签 var=”msg” 会通过 setMsg() 方法将值分配给关联的操作类。

这是错误的,set标签不会调用setMsg()方法,它只会将“值”分配给名为“msg”的变量,而不是操作的属性值。

关于java - Struts2文件上传错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18524721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com