struts 2 上传文件问题

coffee_guy 发布于 2013/01/20 12:20
阅读 229
收藏 1

struts.xml 配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>


  <!-- 系统常量定义,定义上传文件字符集编码 -->
    <constant name="struts.i18n.encoding" value="utf-8"></constant>
    <!-- 系统常量定义,定义上传文件临时存放路径 -->
    <constant name="struts.multipart.saveDir" value="D:\JAVA\apache-tomcat-7.0.23\temp"></constant>




<package name="file" extends="struts-default">


<action name="fileupload" class="com.test.action.UploadAction">

<result name="success">./upload/uploadResult.jsp</result>

<result name="input">/Exception.jsp</result>
<interceptor-ref name="fileUpload">
<param name="maximumSize">409600</param>
<param name="allowedTypes"> image/png,image/gif,image/jpeg</param>
</interceptor-ref>
</action>

</package>
</struts>


上传的文件,为什么还是会被删掉呢???

2013-1-20 11:43:08 com.opensymphony.xwork2.util.logging.jdk.JdkLogger info

信息: Removing file file D:\JAVA\apache-tomcat-7.0.23\temp\upload__6e0fd9d1_13c560d73b1__8000_00000002.tmp

加载中
0
coffee_guy
coffee_guy
晕啊。。。学艺不精啦。。。终于找到原因了。。。Action没有写对。。。。。改“filename”为 “fileFileName”    这里犯了致命的错误 。。。struts框架已经封装好了 “ fileFileName ”属性的。。。 用了两天,终于解决了这个小细节错误 。   
0
xwz
xwz

Struts2 会自动接收文件, 并存到零时目录, 对于tomcat就是temp文件夹.

在Action中你需要自己存一下这个文件

http://www.cnblogs.com/linjiqin/archive/2011/03/21/1990674.html

0
JavaOlder
JavaOlder
你把uploadAction类的代码贴上来。
0
coffee_guy
coffee_guy

package com.test.action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
//import java.io.InputStream;
//import java.io.OutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport
{
//上传用户的信息
/**
* 文件上传处理Action
*/
private static final long serialVersionUID = 1L;

private String name ;

private String password ;
//存储请求提交过来的,文件的内容 (****字节流****)
private File file ;
//文件名字
private String filename ;
//文件的路径
private String fileContentType ;

public String getFilename()
{

return filename;
}

public void setFilename(String filename)
{

this.filename = filename;
}

public String getFileContentType()
{

return fileContentType;
}

public void setFileContentType(String fileContentType)
{

this.fileContentType = fileContentType;
}

public String getName()
{

return name;
}

public void setName(String name)
{

this.name = name;
}

public String getPassword()
{

return password;
}

public void setPassword(String password)
{

this.password = password;
}

public File getFile()
{
return file;

}

public void setFile(File file)
{
this.file = file;

}

/**
*
* 业务、逻辑处理方法
*/

@SuppressWarnings("deprecation")
@Override
public String execute() throws Exception
{
try
{

// 输入输
FileInputStream Is = new FileInputStream(file);


String webroot = ServletActionContext.getRequest().getRealPath("/tmp");

System.out.println("webroot = "+webroot);
File destFile = new File(webroot,this.getFilename());

//生成一个输出流
FileOutputStream Os = new FileOutputStream(destFile);

byte[] buffer = new byte[400] ;
int length = 0 ;
while((length = Is.read(buffer))>0)
{
Os.write(buffer,0,length);
}

Is.close() ;
Os.close() ;
}catch (Exception e) {

e.printStackTrace();
return INPUT ;
}
return SUCCESS ;
}

public String test()
{
System.out.println("test");
return SUCCESS ;
}
}

返回顶部
顶部