虽然现在在企业中已经很少使用struts1版进行开发了,但本文的主旨在于熟悉其框架中的思想,以及各个框架的一些区别。下面就struts1中文件上传的配置步骤作一下简要的说明。
首先,要相关的jar包,这点不管你是使用哪种框架都要做这步操作,这是没得说的。在引用相关的资源文件后,我们就要配置一些基本的actoin,这些配置步骤在这里就不做说明了,可参考我之前写过的一篇博文《java中struts 框架基本配置小结》。下面我就直接说明一下,jsp页面的配置以及后台java代码是如何编写的。
1、具体的jsp代码如下:
<form action="/testfileupload/fileupload.do" method="post" enctype="multipart/form-data">
<input type="file" name="formFile" id="formFile"/>
<br/>
<input type="submit" value="上传">
</form>
这里需要注意的是form标签的enctype值必须为”multipart/form-data”,action属性为对应后台配置的action表单提交时调用。
当然我们还要在Tomcat的WebContext下创建一个文件夹,用以保存上传的文件,本文就以upload文件夹为例
对应后台的action处理代码如下:
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;
import com.ev.formbean.FileBean;
public class FileUploadAction extends Action {
@Override
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
FileBean file = (FileBean)form;
FormFile formFile = file.getFormFile();
InputStream in = formFile.getInputStream();
String fileName = formFile.getFileName();
int size = formFile.getFileSize();
byte[] arr = new byte[size];
in.read(arr);
String path = super.servlet.getServletContext().getRealPath("/upload");
OutputStream out = new FileOutputStream(path+"\\"+fileName);
out.write(arr);
in.close();
out.close();
System.out.println("上传成功!");
return mapping.findForward("index");
}
}
其实这些后台代码的基本思想就是一些输入输出流的读写而已。过程就是从FormFile类型的对象(struts1内置的类型)获得一个输入,然后将数据存入到一个数组中,再根据文件路径和文件名创建输出流,从而将文件存到文件夹中。