2012-06-20 33 views
1

目前,上传文件成功后,时生成的tmp文件被保存在:如何配置Struts 2上传文件夹?

\ Apache软件基金会\ 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:

我使用2.1.8.1

+0

我阅读了这个资源,并且完全按照它的样子进行了操作,但它仍然不起作用:http://struts.apache.org/2.0.6/docs/handling-file-uploads.html – ThreaT

回答

0

您使用的弹簧滑柱2的版本? 在这种情况下,您可以使用所需的上传目录来配置您的ActionBean。 只需添加到您的行动豆:

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

,并修改Spring配置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所在的目录并不是一个好主意。然后,每次重新部署时都会丢失所有文件。

+0

请问。这样做后,tmp文件也在这里? – ThreaT

+0

在我的例子中,我假设你在动作中有一个文件的setter。例如。 setUploadFile(文件文件)。这名制定者必须与表格中的姓名一致。然后,只要你允许.tmp文件上传。该文件将由setter设置。然后,由您决定使用upload-dir和文件将文件存储到磁盘中。 – user829237

+0

太棒了。你可能会添加一个关于如何获得webapp的根目录的编辑。所以我可以简单地说'String uploadDir = root +“/ uploadDir”;'。这将基本上去某个地方,如:'C:/ project/build/web/uploadDir /' – ThreaT