meixue
meixue
2008-08-12 14:31
浏览 280
已采纳

为什么我用struts2做的文件上传总是接到null值呢?

我用struts2 做的文件上传
1.前台imgUp.ftl代码为:
[code="java"]

选择类型: a文件夹b文件夹
只能上传jpg,gif类型图片,大小不能超过5M
${fieldErrors['fileUp']!}

[/code]

2.action代码为:
[code="java"]
public class UploadAction extends BasePageSupport{
private String selectDir;//上传目录参数
private File upload;//上传文件域
private String uploadContentType;//上传文件的类型
private String uploadFileName;//上传文件名

public String getSelectDir() {
    return selectDir;
}
public void setSelectDir(String selectDir) {
    this.selectDir = selectDir;
}
public File getUpload() {
    return upload;
}
public void setUpload(File upload) {
    this.upload = upload;
}
public String getUploadContentType() {
    return uploadContentType;
}
public void setUploadContentType(String uploadContentType) {
    this.uploadContentType = uploadContentType;
}
public String getUploadFileName() {
    return uploadFileName;
}
public void setUploadFileName(String uploadFileName) {
    this.uploadFileName = uploadFileName;
}

/**
 * 文件上传入口
 * 
 * @return String
 * @throws Exception
 */
public String toUpload() throws Exception {
    return SUCCESS;
}

/**
 * 文件上传
 * 
 * @return String
 * @throws Exception
 */
public String uploadFile() throws Exception{
    System.out.println("文件名="+getUploadFileName());
    System.out.println("文件类型="+getUploadContentType());
    System.out.println("上传目录="+getSelectDir());
    return SUCCESS;
}

}
[/code]

3.struts.xml配置
[code="java"]




<!-- 文件上传入口 -->


/WEB-INF/template/front/imgUp.ftl

<!-- 文件上传 -->
<action name="upload" class="com.comabc.web.action.front.UploadAction" method="uploadFile">
    <result name="success">
        <param name="location">/WEB-INF/template/front/imgUp.ftl</param>
    </result>
    <result name="input">
        <param name="location">/WEB-INF/template/front/imgUp.ftl</param>
    </result>
</action>

[/code]

4.web.xml配置还是以前一样的:
[code="java"]
<!-- 定义struts2的filterDispathcer的filter -->

struts2
org.apache.struts2.dispatcher.FilterDispatcher

<!-- filterDispatcher用来初始化struts2并且处理所有的web请求 -->
<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>*.action</url-pattern>
</filter-mapping>

<!-- FilterDispatcher辅助类开始,多文件上传时用 -->
<filter> 
    <filter-name> struts-cleanup </filter-name> 
    <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class> 
</filter>
<filter-mapping>
    <filter-name>struts-cleanup</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!-- FilterDispatcher辅助类结束 -->

[/code]

大家帮我看看。哪里不对吗?我运行。输出总是:
文件名=null
文件类型=null
上传目录=a
文件名和文件类型都接收不到!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • piccbj
    piccbj 2008-08-12 15:32
    已采纳

    JSP没什么问题,问题出在UploadAction 中。你的上传文件类型和文件名根本就没有赋值当然为空了。
    ……
    FormFile file = form.getImportFile();
    ……
    然后从file 中获取文件信息给变量
    private String uploadContentType;//上传文件的类型

    private String uploadFileName;//上传文件名

    赋值。

    另外JSP中我修改一下:

    要用到apache的 commons-fileupload.jar包,struts自带有这个包。

    点赞 评论

相关推荐