您的位置:首页 > 编程语言 > Java开发

struts2实现单文件上传

2017-10-12 18:51 381 查看
新建web项目,导入Struts2,配置好所有东西就可以开始实现了

项目目录:



先实现上传的这个界面,很简单就是一个表单

index.jsp

<body>
<form action="uploads" method="post" enctype="multipart/form-data" >
上传文件:<input type="file" name="file1"><br/>
         
         
        <input type="submit" value="提交">
</body>




注意:在进行文件上传时,表单提交方式是post的方式,因为文件上传时二进制文件可能会很大,enctype属性是multipart/form-data,不然就会以二进制文本上传到服务器端

2. 上传成功页面

success.jsp

<body>
上传成功!<br/>
</body>


上传失败页面

<body>
上传失败!<br/>
</body>


struts.xml

<constant name="struts.multipart.maxSize" value="10240000" />
<package name="default" namespace="/" extends="struts-default" >
<action name="uploads" class="mypackage.FileUpload">

<result name="success">/success.jsp</result>
<result name="error">/error.jsp</result>
</action>

</package>


FileUpload.java

package mypackage;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class FileUpload extends ActionSupport{
private File file1 ; //具体上传文件的 引用 , 指向临时目录中的临时文件
public String file1FileName ;  // 上传文件的名字 ,FileName 固定的写法

public File getFile1() {
return file1;
}
public void setFile1(File file1) {
this.file1 = file1;
}
public String getFile1FileName() {
return file1FileName;
}
public void setFile1FileName(String file1FileName) {
this.file1FileName = file1FileName;
}

@Override
public String execute() throws Exception {
if(file1==null)
return "error";
//获取文件存储路径
String path = ServletActionContext.getRequest().getRealPath("/upload");  ;
//输出流
OutputStream os = new FileOutputStream(new File(path,file1FileName));
//输入流
InputStream is = new FileInputStream(file1);

byte[] buf = new byte[1024];
int length = 0 ;

while(-1 != (length = is.read(buf) ) )
{
os.write(buf, 0, length) ;
}
is.close();
os.close();

return "success";
}
}


运行:





如果不选中上传的文件,直接提交,显示上传失败





此时,一定很纳闷文件上传到哪里去了,我的web项目是在Tomcat7服务器上配置的,所以文件上传到Tomcat7服务器上了,但你发现在Tomcat7服务器下的webapps文件夹下并没有找到项目文件。

因为MyEclipse在运行项目时是不会把项目考到webapps下的,他会在令一个地方建立一个虚拟目录,它就是存放你的项目的地址 。

该路径的寻找在下图你选中所部署的服务器



该地址就是你文件上传的位置,打开,你就发现你上传的文件就在该文件夹上了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2.0 web