struts2单个文件上传的两种实现方式_Java教程-查字典教程网
struts2单个文件上传的两种实现方式
struts2单个文件上传的两种实现方式
发布时间:2016-12-28 来源:查字典编辑
摘要:通过2种方式模拟单个文件上传,效果如下所示开发步骤如下:1、新建一个web工程,导入struts2上传文件所需jar,如下图目录结构2、新建...

通过2种方式模拟单个文件上传,效果如下所示

开发步骤如下:

1、新建一个web工程,导入struts2上传文件所需jar,如下图

目录结构

2、新建Action

第一种方式

复制代码 代码如下:

package com.ljq.action;

import java.io.File;

import org.apache.commons.io.FileUtils;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionContext;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")

public class UploadAction extends ActionSupport{

private File image; //上传的文件

private String imageFileName; //文件名称

private String imageContentType; //文件类型

public String execute() throws Exception {

String realpath = ServletActionContext.getServletContext().getRealPath("/images");

//D:apache-tomcat-6.0.18webappsstruts2_uploadimages

System.out.println("realpath: "+realpath);

if (image != null) {

File savefile = new File(new File(realpath), imageFileName);

if (!savefile.getParentFile().exists())

savefile.getParentFile().mkdirs();

FileUtils.copyFile(image, savefile);

ActionContext.getContext().put("message", "文件上传成功");

}

return "success";

}

public File getImage() {

return image;

}

public void setImage(File image) {

this.image = image;

}

public String getImageFileName() {

return imageFileName;

}

public void setImageFileName(String imageFileName) {

this.imageFileName = imageFileName;

}

public String getImageContentType() {

return imageContentType;

}

public void setImageContentType(String imageContentType) {

this.imageContentType = imageContentType;

}

}

第二种方式

复制代码 代码如下:

package com.ljq.action;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

@SuppressWarnings("serial")

public class UploadAction2 extends ActionSupport {

// 封装上传文件域的属性

private File image;

// 封装上传文件类型的属性

private String imageContentType;

// 封装上传文件名的属性

private String imageFileName;

// 接受依赖注入的属性

private String savePath;

@Override

public String execute() {

FileOutputStream fos = null;

FileInputStream fis = null;

try {

// 建立文件输出流

System.out.println(getSavePath());

fos = new FileOutputStream(getSavePath() + "" + getImageFileName());

// 建立文件上传流

fis = new FileInputStream(getImage());

byte[] buffer = new byte[1024];

int len = 0;

while ((len = fis.read(buffer)) > 0) {

fos.write(buffer, 0, len);

}

} catch (Exception e) {

System.out.println("文件上传失败");

e.printStackTrace();

} finally {

close(fos, fis);

}

return SUCCESS;

}

/**

* 返回上传文件的保存位置

*

* @return

*/

public String getSavePath() throws Exception{

return ServletActionContext.getServletContext().getRealPath(savePath);

}

public void setSavePath(String savePath) {

this.savePath = savePath;

}

public File getImage() {

return image;

}

public void setImage(File image) {

this.image = image;

}

public String getImageContentType() {

return imageContentType;

}

public void setImageContentType(String imageContentType) {

this.imageContentType = imageContentType;

}

public String getImageFileName() {

return imageFileName;

}

public void setImageFileName(String imageFileName) {

this.imageFileName = imageFileName;

}

private void close(FileOutputStream fos, FileInputStream fis) {

if (fis != null) {

try {

fis.close();

} catch (IOException e) {

System.out.println("FileInputStream关闭失败");

e.printStackTrace();

}

}

if (fos != null) {

try {

fos.close();

} catch (IOException e) {

System.out.println("FileOutputStream关闭失败");

e.printStackTrace();

}

}

}

}

struts.xml配置文件

复制代码 代码如下:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"

"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

<>

<constant name="struts.action.extension" value="do" />

<>

<constant name="struts.serve.static.browserCache" value="false" />

<>

<constant name="struts.configuration.xml.reload" value="true" />

<>

<constant name="struts.devMode" value="true" />

<>

<constant name="struts.ui.theme" value="simple" />

<>

<>

<constant name="struts.i18n.encoding" value="UTF-8" />

<>

<constant name="struts.multipart.maxSize" value="10701096"/>

<>

<constant name="struts.multipart.saveDir " value="d:/tmp" />

<package name="upload" namespace="/upload" extends="struts-default">

<action name="*_upload" method="{1}">

<result name="success">/WEB-INF/page/message.jsp</result>

</action>

</package>

<package name="upload2" extends="struts-default">

<action name="upload2" method="execute">

<>

<param name="savePath">/images</param>

<result name="success">/WEB-INF/page/message.jsp</result>

<result name="input">/upload/upload.jsp</result>

<interceptor-ref name="fileUpload">

<>

<param name="allowedTypes">image/bmp,image/png,image/gif,image/jpeg</param>

<>

<param name="maximumSize">1025956</param>

</interceptor-ref>

<>

<interceptor-ref name="defaultStack" />

</action>

</package>

</struts>

上传表单页面

复制代码 代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@taglib uri="/struts-tags" prefix="s" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>文件上传</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

</head>

<body>

<>

<>

<form action="${pageContext.request.contextPath}/upload2/upload2.do"

enctype="multipart/form-data" method="post">

文件:<input type="file" name="image">

<input type="submit" value="上传" />

</form>

<br/>

<s:fielderror />

</body>

</html>

显示结果页面

复制代码 代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%@ taglib uri="/struts-tags" prefix="s"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

<head>

<title>上传成功</title>

<meta http-equiv="pragma" content="no-cache">

<meta http-equiv="cache-control" content="no-cache">

<meta http-equiv="expires" content="0">

</head>

<body>

上传成功!

<br/><br/>

<>

<img src="${pageContext.request.contextPath}/<s:property value="'images/'+imageFileName"/>">

<s:debug></s:debug>

</body>

</html>

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Java学习
    热门Java学习
    编程开发子分类