本文共 4507 字,大约阅读时间需要 15 分钟。
2.1. 步骤一:创建带上传表单域的页面
<%@ page language = "java" contentType = "text/html; charset=UTF-8" %> < html > < head > < title > Struts2 File Upload </ title > </ head > < body > < form action = "fileUpload.action" method = "POST" enctype = "multipart/form-data" > 文件标题: < input type = "text" name = "title" size = "50" />< br /> 选择文件: < input type = "file" name = "upload" size = "50" />< br /> < input type = "submit" value = " 上传 " /> </ form > </ body > </ html > |
package org.qiujy.web.struts2; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; /** * 处理文件上传的 Action 类 * @author qiujy * @version 1.0 */ public class FileUploadAction extends ActionSupport { private static final int BUFFER_SIZE = 16 * 1024; // 文件标题 private String title ; // 上传文件域对象 private File upload ; // 上传文件名 private String uploadFileName ; // 上传文件类型 private String uploadContentType ; // 保存文件的目录路径 ( 通过依赖注入 ) private String savePath ; // 以下省略 getter 和 setter...... // 自己封装的一个把源文件对象复制成目标文件对象 private static void copy(File src, File dst) { InputStream in = null ; OutputStream out = null ; try { in = new BufferedInputStream( new FileInputStream(src), BUFFER_SIZE ); out = new BufferedOutputStream( new FileOutputStream(dst), BUFFER_SIZE ); byte [] buffer = new byte [ BUFFER_SIZE ]; int len = 0; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } } catch (Exception e) { e.printStackTrace(); } finally { if ( null != in) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } if ( null != out) { try { out.close(); } catch (IOException e) { e.printStackTrace(); } } } } @Override public String execute() throws Exception { // 根据服务器的文件保存地址和原文件名创建目录文件全路径 String dstPath = ServletActionContext.getServletContext() .getRealPath( this .getSavePath()) + "//" + this .getUploadFileName(); System. out .println( " 上传的文件的类型: " + this .getUploadContentType()); File dstFile = new File(dstPath); copy( this . upload , dstFile); return SUCCESS ; } } |
<! DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd" > < struts > < package name = "fileUploadDemo" extends = "struts-default" > < action name = "fileUpload" class = "org.qiujy.web.struts2.FileUploadAction" > <!-- 动态设置 Action 中的 savePath 属性的值 --> < param name = "savePath" > /upload </ param > < result name = "success" > /showupload.jsp </ result > </ action > </ package > </ struts > |
转载地址:http://hrici.baihongyu.com/