测试webwork的文件上传,用一个web项目来试验,现在上传的效果是,无论选择什么类型的文件,服务器上保存的文件名都是.tmp这样的扩展名,如何使服务器上保存的文件名与原始文件名(包括扩展名)一致,或者更进一步,让扩展名一致,前面是一个顺序编号的字符串?把几个文件的源代码贴出来,各位帮我看看吧,谢谢!!!
web.xml文件<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
 
  <filter>
   <filter-name>webwork</filter-name>
   <filter-class>com.opensymphony.webwork.dispatcher.FilterDispatcher</filter-class>  
  </filter>
  
  <filter-mapping>
<filter-name>webwork</filter-name>
<url-pattern>/*</url-pattern>
  </filter-mapping>
  
</web-app>webwork.properties文件
[code=INIFile]
webwork.multipart.parser=jakarta
webwork.multipart.maxSize=2097152
[/code]
上传文件的jsp文件:<%@ page contentType="text/html;charset=gb2312"%><html>
  <form action="upload.action" enctype="multipart/form-data" method="post">
   请选择要上传的文件:<input type="file" name="file">
   <input type="submit" value="上传">  
  </form>
</html>xwork.xml文件<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd"><xwork>
<include file="webwork-default.xml"></include>
<package name="default" extends="webwork-default">
<action name="upload" class="test.Upload">
<param name="directory">e:\upload\</param>
<result name="success">upload_success.jsp</result>
<interceptor-ref name="fileUploadStack"></interceptor-ref>
</action>
</package>
</xwork>action类文件:package test;import java.io.File;import com.opensymphony.xwork.ActionSupport;@SuppressWarnings("serial")
public class Upload extends ActionSupport { private String directory;
private File file;

public String getDirectory() {
return directory;
} public void setDirectory(String directory) {
this.directory = directory;
} public File getFile() {
return file;
} public void setFile(File file) {
this.file = file;
} public String getFilePath() {
return directory + file.getName();
} @Override
public String execute() throws Exception {
file.renameTo(new File(this.getFilePath()));
return SUCCESS;
}
}上传成功后的jsp页面:<%@ page contentType="text/html;charset=gb2312"%>
<%@ taglib prefix="ww" uri="/webwork" %><html>
文件上传成功,位置:<ww:property value="filePath"/>
</html>

解决方案 »

  1.   

    你说的是action类文件吗?我已经贴上来了阿,没看到?
      

  2.   

    <input type="file" name="test" />
    private String testFileName;//这个就是你原来的文件名
      

  3.   

    对应你的<input type="file" name="file">
    你的变量命名应该为fileFileName;这些事webWork2或Struts2 自己封装的,
    还有一个fileFileContentType(xxFileContentType)为文件类型
    (不确定中间的File要不要,有点忘了,即可能是fileContentType(xxContentType))
      

  4.   

    关于你的upload_xxxx_xxx_xx.tmp只是WebWork2或struts2在上传过程
    中临时保存的文件,上传成功后会自动删除掉的
      

  5.   

    多谢楼上老大,问题解决。进一步请教下面的三个问题,我把帖子加分,请多多指教,谢谢!1、如何设定所上传文件的最大字节数?
    有说在webwork.properties文件里面,设置webwork.multipart.maxSize的值就可以,可我测试怎么不行呢?2、如何设置允许上传和禁止上传的文件类型?
    比如禁止上传exe可知性文件,只允许上传图片文件等等,这个如何配置?3、如何让文件名(扩展名前面的部分)按一定的顺序编号?
    现在这样的程序,如果一个abc.zip这样的文件上传后,再来一个abc.zip的同名文件上传,虽然显示的是上传成功,但实际上是到临时目录那里晃一下又被删掉了。所以我想要解决这个问题,最好是把文件名按时间+流水号这样编号,该如何实现呢?这个问题可能如果比较复杂的话,提供个大致步骤也可以再次感谢!!
      

  6.   

    1、这个配置文件里面设置的确不生效,可以在xwork.xml中设置param,然后手工判断,自己处理2、同上处理3、把文件重命名即可,想按什么编号就自己写,就是一个字符串的处理而已