Struts框架之文件的上传

原创 2015年07月31日 19:37:58

文件上传

Struts的文件上传使用的是封装好的框架,主要使用FileUpload组件实现。
对于前台页面需要在form表单中增加属性enctype=”multipart/form-data”,可以使用struts2标签<s:file/>或者使用<input type="file"/>进行浏览选择提交。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    <%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
</head>
<body>
    <!-- 对于文件上传需要在form标签中增加属性enctype="multipart/form-data" -->
    <form action="fileupload.action" method="post" enctype="multipart/form-data">
        <s:file name="fileUpload.files"></s:file>
        <s:submit value="上传"></s:submit>
    </form>
</body>
</html>

编写文件上传的实体类,需要有File属性和String类型的文件名称属性,另外此类可以单文件上传也可以进行多文件上传。

package com.struts.bean;

import java.io.File;

/**
 * @TODO 文件上传实体类
 * @author Administrator
 * @date 2015年7月9日 下午9:29:19
 * @version 1.0
 */
public class FileEntity {
    private File[] files;
    private String[] filesFileName;//命名方式必须为files属性后面加上FileName
    public File[] getFiles() {
        return files;
    }
    public void setFiles(File[] files) {
        this.files = files;
    }
    public String[] getFilesFileName() {
        return filesFileName;
    }
    public void setFilesFileName(String[] filesFileName) {
        this.filesFileName = filesFileName;
    }
}

文件上传服务类,可以使用FileUtils工具类进行文件copy工作。

package com.struts.service;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionSupport;
import com.struts.bean.FileEntity;

/**
 * @TODO 文件上传的服务类包括单文件和多文件
 * @author Administrator
 * @date 2015年7月9日 下午2:49:01
 * @version 1.0
 */
@SuppressWarnings("serial")
public class FileUpload extends ActionSupport{
    private FileEntity fileUpload;

    public FileEntity getFileUpload() {
        return fileUpload;
    }

    public void setFileUpload(FileEntity fileUpload) {
        this.fileUpload = fileUpload;
    }
    public String execute(){
        String uploadPath = ServletActionContext.getRequest().getRealPath("/");
        for(int i = 0; i < fileUpload.getFiles().length; i++){
            System.out.println(fileUpload.getFilesFileName()[i]);
            File destFile = new File(uploadPath+File.separator + fileUpload.getFilesFileName()[i]);
            try {
                FileUtils.copyFile(fileUpload.getFiles()[i], destFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return Action.SUCCESS;
    }
}

由于Struts文件上传的大小默认为2097152b,也就是2M。有两种方式可以进行文件上传的大小。
通过struts.properties配置文件中声明和使用常量配置(其实还可以通过Interfactor来进行配置)。
struts.properties配置文件:

#设置上传文件大小为10M,单位为Byte
#struts.multipart.maxSize=104857600

常量为:<constant name="struts.multipart.maxSize" value="104857600"/>
struts-file.xml配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <!-- 开发者模式 -->
    <constant name="struts.devMode" value="true"/>
    <!-- 主题模式为simple,避免使用struts标签造成标签冗余 -->
    <constant name="struts.ui.theme" value="simple"/>
    <!-- 设置上传文件的大小 -->
    <constant name="struts.multipart.maxSize" value="104857600"></constant>
    <package name="file" namespace="/" extends="struts-default">
        <!-- 配置全局result -->
        <global-results>
            <result name="success">/success.jsp</result>
        </global-results>
        <action name="file*" class="com.struts.service.FileUpload" method="{1}">
        </action>
    </package>
</struts>

笨鸟先飞之Java(一)--使用struts2框架实现文件上传

不管是.net还是Java,我们最常接触到的就是文件的上传和下载功能,在Java里要实现这两个常用功能会有很多种解决方式,但是struts2的框架却能给我们一个比较简单的方式,下面就一起来看吧:...
  • YSC1123
  • YSC1123
  • 2015年07月21日 20:22
  • 1800

struts文件上传与下载简单DEMO

首先创建一个简单的project,配置其中的web.xml文件   applicationProject                       struts2              ...
  • xy18930914
  • xy18930914
  • 2016年03月30日 11:13
  • 1382

【Struts2框架】第八节上传-利用struts2实现上传功能

Struts2的文件上传 将表单的method属性设置为post,将enctype设置为multipart/form-data。 将enctype设置为multippart/form-data,浏览...
  • u013517797
  • u013517797
  • 2015年08月03日 09:34
  • 1336

解决Struts2文件上传的大小限制问题

1. 问题描述 背景:本人用eclipse开发一个基于Struts2.3.16.3_Spring4.1.1_Hibernate4.3.6架构的web项目, 需要用到xhEidtor编辑器, 在上传大...
  • Cryhelyxx
  • Cryhelyxx
  • 2014年11月29日 00:53
  • 2194

Struts2实现简单的上传功能

Struts2提供的文件上传下载机制十分简便,使得我们写很少的代码,就可以实现该功能,单文件上传、多文件上传、下载等。    当然,我们肯定要引入Struts2上传下载文件相关的jar包的,这里需要引...
  • u010785685
  • u010785685
  • 2016年04月23日 15:13
  • 1343

struts2框架-------文件上传机制

上传文件是很多Web程序都具有的功能 Struts2 是通过org.apache.commons.fileupload.FileUpload类实现文件上传。FileUpload 通过将HTTP 的数据...
  • u012176984
  • u012176984
  • 2015年02月18日 00:30
  • 700

Java三大框架之struts的上传文件出错信息配置(允许上传的类型,上传文件的大小,以及大文件上传说明等等)

Java中利用struts2框架进行文件上传,还可以设置一些出错信息,比如超过了自己设置文件的最大大小、文件的类型。 第一点:设置文件的类型: 设置允许的文件类型,假设是不允许的,就报错。这个是配...
  • qq_25821067
  • qq_25821067
  • 2016年07月23日 23:05
  • 1180

文件上传(Struts框架)

1.创建web项目 2.加入Struts所需的jar包 3.代码: (1)loadStruts.jsp        String path = request.getContextP...
  • yucc123456
  • yucc123456
  • 2016年11月28日 09:10
  • 93

Struts实现单文件上传、修改、删除(以图片为例)

一、文件上传         思想:图片是以流的方式进行读取,上传的图片存放在服务器端的某个文件夹中,数据库中保存的是上传的图片的地址。 1.ActionForm(userForm)     p...
  • ZFX5130
  • ZFX5130
  • 2013年11月23日 16:26
  • 1248

Struts2实现文件上传并显示实时进度

基于浏览器的文件上传,特别是对于通过标签来实现上传的情况, 存在着严重的性能问题,因为用户提交了文件之后,在浏览器把文件上传到服务器的过程中,界面看上去似乎是静止的,如果是小文件还好些,如果不幸需要上...
  • z69183787
  • z69183787
  • 2016年09月14日 11:27
  • 2206
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts框架之文件的上传
举报原因:
原因补充:

(最多只允许输入30个字)