Struts2文件上传错误

我是一个使用struts2文件上传和我的行动类包含3个私人fileds与getter和setters

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

我有些话要澄清

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

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

  • 要获取内容类型,我应该使用jst“contentType”或myfileVariableName +“contentType”。 这是否也是强制性的?

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

  • 如果我使用ModelDriven,发生同样的情况,我只能得到File变量,其他两个变量都是null。 为什么?

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


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

    文件上传功能取决于“fileUpload拦截器”,确保它包含在Action的堆栈中。 幸运的是,默认堆栈已经包含了“fileUpload Interceptor”。

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

    例如,如果操作文件中的文件属性是私有文件uploadedFile,则内容类型将为uploadFileContentType,文件名为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 tag var =“msg”将通过setMsg()方法将值分配给关联的操作类。

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

    链接地址: http://www.djcxy.com/p/31249.html

    上一篇: Struts2 file upload errors

    下一篇: ColdFusion file upload issue