文件上传在struts1中是比较有优势的。
文件上传概述:使用HTML表单上传一个或多个文件,必须把HTML表单的enctype设置为multipart/form-data,method的属性设置为post
形式为
1. 在jsp页面的文件上传表单里面用上html标签库的file标签
2. 建立ActionForm,设置每个上传的文件属性为FormFile类型
3. 在Action中获取上传文件,然后进行相应的处理
核心代码:
程序分析:
struts会调用getFormFile获取上传的文件对象(FormFile对象),然后调用FormFile对象的getFileData()方法把上传文件解析成字节数组,再使用上传文件的文件名把这个字节数组重新保存为WEB-INF目录中的一个文件
FormFile类的方法
destory---------------------删除上传文件的内容
getContentType--------------返回上传文件的内容类型
getFileData-----------------把上传的文件返回为字节数组
getFileSize-----------------返回上传文件的名字
getInputStream--------------把上传文件返回成一个文件流形式
setContentType--------------设置上传文件的内容类型
setFileName-----------------设置上传文件的名称
setFileSize-----------------设置上传文件的大小
文件上传概述:使用HTML表单上传一个或多个文件,必须把HTML表单的enctype设置为multipart/form-data,method的属性设置为post
形式为
<form action="提交的action路径" method="post" enctype="multipart/form-data">
.......jsp控件<input type="file" name="upload"/>
.......jsp控件<input type="text" name="description"/>
.......jsp控件<input type="submit" value="SUBMIT"/>
</form>
struts中的文件上传重点
1. 在jsp页面的文件上传表单里面用上html标签库的file标签
2. 建立ActionForm,设置每个上传的文件属性为FormFile类型
3. 在Action中获取上传文件,然后进行相应的处理
核心代码:
package com.mySoft.action;
import java.io.File;
import java.io.RandomAccessFile;
import javax.servlet.ServletContext;
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.mySoft.form.UploadForm;
public class UploadAction extends Action{
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
UploadForm uploadForm = (UploadForm)form;
if(uploadForm!=null){
String description = uploadForm.getDescription();
FormFile formFile = uploadForm.getFormFile();
if(formFile!=null){
byte[] bytes = formFile.getFileData();
ServletContext servletContext = getServlet().getServletContext();
String path = servletContext.getRealPath("/WEB-INF");
String fileName = formFile.getFileName();
File uploadFile = new File(path,fileName);
RandomAccessFile raf = new RandomAccessFile(uploadFile,"rw");
raf.write(bytes,0,bytes.length-2);
raf.close();
}
}
return mapping.findForward("success");
}
}
程序分析:
struts会调用getFormFile获取上传的文件对象(FormFile对象),然后调用FormFile对象的getFileData()方法把上传文件解析成字节数组,再使用上传文件的文件名把这个字节数组重新保存为WEB-INF目录中的一个文件
FormFile类的方法
destory---------------------删除上传文件的内容
getContentType--------------返回上传文件的内容类型
getFileData-----------------把上传的文件返回为字节数组
getFileSize-----------------返回上传文件的名字
getInputStream--------------把上传文件返回成一个文件流形式
setContentType--------------设置上传文件的内容类型
setFileName-----------------设置上传文件的名称
setFileSize-----------------设置上传文件的大小