今天的这文件上传比比之前的那个简单多,之前的那个是用到了I/O流啦,而且在Struts配置文件中也得写好几个项,还得进行特定的文件格式说明才允许上传等等...写这特不爽、嘿嘿..
(1)首先就是jap页面:
<body> 上传文件时必须加上、
<form action="${pageContext.request.contextPath}/page/upload" enctype="multipart/form-data" method="post">
<input type="file" name="upload"><br/>
<input type="submit" value="上传">
</form>
</body>
(2)再就是Struts配置文件:(这次的挺简单,比用IO流少了许多呀、)
<!-- 设置上传文件大小为10兆 -->
<constant name="struts.multipart.maxSize" value="10701096"></constant>
<!-- 上传文件 -->
<action name="upload" class="cn.bdqn.action.Action" method="upload">
<result >/page/upsuccess.jsp</result>
</action>
(3)最后就是Action.java
private File upload;//得到上传的文件
private String uploadFileName;//上传文件的名字
private String uploadContentType;//上传文件的格式
//给出get/set方法
/**
* 文件上传
* @return
* @throws Exception
*/
public String upload() throws Exception{
//设置文件上传的路径
String realpath = ServletActionContext.getServletContext().getRealPath("/upload");
if(upload!=null){
File savefile = new File(new File(realpath),uploadFileName);
if(!savefile.getParentFile().exists()) //得到这个目录并判断这个目录是否存在
savefile.getParentFile().mkdir(); //创建一级目录
FileUtils.copyFile(upload, savefile);
ActionContext.getContext().put("msg", "上传成功");
}
System.out.println("上传文件:"+getUploadFileName()+"\n文件类型为:"+getUploadContentType()+"\n文件上传路径为:"+realpath);
return this.SUCCESS;
}
实现这次上传功能的主要方法就是用到 FileUtils.copyFile(upload, savefile);在commons.io.jar包中。其实就是一个东西拷贝到另一个地方
其中upload为原文件,savefile为要拷到的目标位置,我们这里设置的是站点的/upload目录下
这次上传文件不用在Struts配置文件中进行声明所传文件的格式了,各种类型文件都能上传成功、
Demo下载 输入提取:ik2e