读书人

struts1 文件下传至Server(基础应用)

发布时间: 2012-09-02 21:00:34 作者: rapoo

struts1 文件上传至Server(基础应用)
文件上传在struts1中是比较有优势的。

文件上传概述:使用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-----------------设置上传文件的大小

读书人网 >软件架构设计

热点推荐