1

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

\Apache 软件基金会\Apache Tomcat 7.0.22\work\Catalina\localhost\Project\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

4

1 回答 1

0

你用的是弹簧吗?在这种情况下,您可以使用所需的上传目录配置 ActionBean。只需添加到您的操作豆:

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

并修改您的 spring 配置applicationContext.xml以设置 uploadDir。您可以通过直接设置值,或者更优选地通过配置文件来设置它,如下所示:

<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 相同的目录中并不是一个好主意。然后,每次重新部署时,您都会丢失所有文件。

于 2012-06-26T09:24:29.117 回答