如何配置Struts 2上传文件夹?

时间:2012-06-20 14:16:25

标签: java tomcat upload struts2

目前,在上传文件后,创建的tmp文件将存储在:

  

\ Apache Software Foundation \ Apache Tomcat   7.0.22 \工作\卡塔利娜\本地主机\项目\ upload__78a0adab_1380z353bfa__7gfe_00000000.tmp

如何将其存储在我自己的自定义目录中?我试过了:

<param name="saveDir">/tmp</param>

但它仍然是我上面提到的那个。

编辑1 - struts.xml:

<action name="file_save" method="fileSave" class="FileActionBean">
            <interceptor-ref name="fileUpload">
                <param name="maximumSize">2097152</param>
                <param name="saveDir">/tmp</param>
                <param name="allowedTypes">
                    image/bmp,image/gif,image/jpeg,image/jpg,image/png
                </param>
            </interceptor-ref>
            <interceptor-ref name="defaultStack"></interceptor-ref>
            <result type="redirect">file</result>
        </action>

编辑2:

我正在使用struts 2版本2.1.8.1

1 个答案:

答案 0 :(得分:0)

你在使用Spring吗? 在这种情况下,您可以使用所需的upload-directory配置ActionBean。 只需添加到您的action-bean:

private String uploadDir;
public void setUploadDir(String uploadDir){
    this.uploadDir = uploadDir;
}

修改spring config applicationContext.xml以设置uploadDir。您可以通过直接设置值,或者更优选地通过configfile设置,如下所示:

<bean id="fileAction" class="FileActionBean" scope="prototype">
    <property name="uploadDir" value="${uploaddir}" />
</bean>

更新

可以很容易地控制要保存文件的位置。 如果路径字符串的第一个字符不是/,则它将相对于“当前”目录。 因此,如果要将其保存在webapp目录中,则不需要任何“根”路径。简单地说:File file = new File("results.txt");

或者,如果您想将其存储在当前目录以外的其他位置,您可以使用../../something进行导航,也可以只输入整个结构到您想要的位置:File file = new File("/home/something/something/myFile.txt");

或者在Windows环境中,您可以尝试File file = new File("Z:\\results\\results.txt");

但将上传的文件放在与webapp相同的目录中并不是一个好主意。然后,每次重新部署时都会丢失所有文件。