struts2学习笔记之十:文件上传

Struts2的上传

1、Struts2默认采用了apache commons-fileupload

2、Struts2支持三种类型的上传组件

3、需要引入commons-fileupload相关依赖包

* commons-io-1.3.2.jar

* commons-fileupload-1.2.1.jar

4、表单中需要采用POST提交方式,编码类型需要使用:multipart/form-data

5、Struts2的Action

取得文件名称->>规则:输入域的名称+固定字符串FileName

取得文件数据->>规则:File 输入域的名称

取得内容类型->>规则:输入域的名称+固定字符串ContentType

6、得到输入流,采用输出流写文件

Action类

package com.djoker.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.Action;

public class uploadAction {

    private String myFileFileName;

    private File myFile;

    private String descContextType;

    public String getMyFileFileName() {
        return myFileFileName;
    }

    public void setMyFileFileName(String myFileFileName) {
        this.myFileFileName = myFileFileName;
    }

    public File getMyFile() {
        return myFile;
    }

    public void setMyFile(File myFile) {
        this.myFile = myFile;
    }

    public String getDescContextType() {
        return descContextType;
    }

    public void setDescContextType(String descContextType) {
        this.descContextType = descContextType;
    }

    public String execute() throws Exception {
        System.out.println(myFileFileName);
        InputStream is = null;
        OutputStream os = null;
        try{
        is = new BufferedInputStream(new FileInputStream(myFile));
        os = new BufferedOutputStream(new FileOutputStream(ServletActionContext.getServletContext().getRealPath("upload") + "/" + myFileFileName));
        byte[] ByteBuffer = new byte[1024];
        int len = 0;
        while((len = is.read(ByteBuffer)) > 0){
            os.write(ByteBuffer, 0, len);
        }
        } finally {
            if(is != null){
                is.close();
            }
            if(os != null){
                os.close();
            }
        }
        return Action.SUCCESS;
    }
}

upload.jsp文件

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
<!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=GB18030">
<title>Insert title here</title>
</head>
<body>
<form action="uploadAction.action" method="post" enctype="multipart/form-data">
    选择文件:<input type="file" name="myFile"><br>
    文件描述:<input type="text" name="desc"><br>
    <input type="submit" value="上传">
</form>
</body>
</html>

struts.xml配置中,配置最大文件上传限制

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">

<struts>

    <!-- 当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置  -->
    <constant name="struts.configuration.xml.reload" value="true"></constant>
    <!-- 提供更加友好的提示信息 -->
    <constant name="struts.devMode" value="true"></constant>
    <!-- 对字符集的设置 -->
    <constant name="struts.i18n.encoding" value="GB18030"/>
    <!-- 配置文件上传最大限制 -->
    <constant name="struts.multipart.maxSize" value="9999999999"></constant>
    <package name="struts2" extends="struts-default" >
        <global-results>
            <result>/success.jsp</result>
            <result name="error">/error.jsp</result>
        </global-results>
        <action name="login" class="com.djoker.struts2.LoginAction">
            <result>/success.jsp</result>
            <result name="error">/error.jsp</result>
        </action>
        <action name="uploadAction" class="com.djoker.struts2.uploadAction">
            <result>/success.jsp</result>
        </action>
    </package>

    <include file="struts-user.xml"></include>
</struts>
时间: 2024-10-03 23:53:49

struts2学习笔记之十:文件上传的相关文章

struts2学习笔记之十七(上传文件)

文件上传 传统的文件上传 (1)需要将form设置为multipart/form-data:此时会将整个表单以二进制流的方式提交:接下来就无法将通过request.getParameter()来获取请求参数. (2)需要启用一个文件上传组件(SmartUpload,Common-FileUpload等) (3)Servlet通过文件上传组件来获取请求参数,获取上传文件. 得到上传文件之后,以IO流的方式把文件写入磁盘 Servlet3.0之后的文件上传 只需要增加一个@MultipartConf

Struts2学习(八)—文件上传和下载

在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来比较繁琐,而且不灵活,在学习了struts2后,struts2为文件上传下载提供了更好的实现机制,在这里我分别就单文件上传和多文件上传的实现进行一下讲解,这里 我们使用的struts2 web项目所导入的jar包中的**commons-fileupload-1.3.1.jar commons-io-

JavaWeb学习总结(五十)——文件上传和下载

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru

JavaWeb学习总结(五十)——文件上传和下载 http://www.cnblogs.com/xdp-gacl/p/4200090.html

在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具common-fileupload这个文件上传组件.这个common-fileupload上传组件的jar包可以去apache官网上面下载,也可以在struts的lib文件夹下面找到,stru

[原创]java WEB学习笔记50:文件上传案例

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

树莓派学习笔记——定时向yeelink上传树莓派CPU温度

0 前言 本文通过python文件IO操作获得树莓派CPU温度信息,通过python request库周期性向yeelink平台上传温度,修改rc.local脚本使得该python脚本在开机时便在后台运行,向平台每5分钟上报一次温度信息. 网上查阅了很多关于linux开机启动的博文,尝试了几遍居然发现方法都无法实现开机启动效果.我想可能是操作系统或开发环境的微小差异产生的,如果发现博文中的内容存在问题,请及时留言,我查证之后定当修改. [相关博文] [树莓派学习笔记--获取树莓派CPU温度] [

ios网络学习------11 原生API文件上传之断点续传思路

#import "MainViewController.h" @interface MainViewController () @end @implementation MainViewController - (void)viewDidLoad { [super viewDidLoad]; //下载文件 [self download]; } -(void)download { //1. NSURL NSURL *url = [NSURL URLWithString:@"ht

笔记:JDBC文件上传&amp;下载

一.上传下载实现原理 文件的上传下载实现原理,如图: 上传原理: 1.客户端浏览器通过文件浏览框,选择需要上传的文件内容(其中包括文件路径和文件内容). 2.客户端浏览器通过上传按钮,将本地文件上传到浏览器. 3.服务器通过程序接收本地文件内容,并将其保存在服务器的磁盘中. 下载实现流程: 1.客户端浏览器通过点击下载按钮,将服务器保存的文件下载到本地磁盘. 2.服务器端通过程序将服务器文件响应给客户端. 二.文件的上传: * 分析实现步骤: * 客户端浏览器通过文件域选择本地要上传的文件. *

SpringMVC学习总结(五)——SpringMVC文件上传例子

这是用的是SpringMVC-3.1.1.commons-fileupload-1.2.2和io-2.0.1 首先是web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/20