目前,上传文件后,创建的 tmp 文件存储在:
\Apache Software Foundation\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
最佳答案
你在使用 Spring 吗? 在这种情况下,您可以使用所需的上传目录配置 ActionBean。 只需添加到您的操作 bean 中:
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 放在同一个目录中并不是一个好主意。那么每次重新部署时,您都会丢失所有文件。
关于java - 如何配置 Struts 2 上传文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11121604/