`
guofengniu
  • 浏览: 55052 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

利用Webwork的Inputstream和Outputstream进行文件上传

阅读更多
最近在做一个管理系统,里面涉及到了文件上传;在网上找了好多的方法,不过很多都包含有过期的代码,很是郁闷。
努力了几天,终于用利用Webwork的Inputstream和Outputstream实现了文件的上传
下面具体代码:
1.前台jsp代码:
<%--
  Created by IntelliJ IDEA.
  User: Luckystar_N
  Date: 2007-10-11
  Time: 20:19:31
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ include file="/common/inc/tagLib.jsp" %>
<html>
<head><title>添加授课教案管理---Foreign Language Department</title></head>
<body>
<ww:form id="teachingPlan" method="post" namespace="/admin" action="insertTeachingPlan.action"
         enctype="multipart/form-data"
         validate="true" theme="xhtml">
    <table class="formTable" cellpadding="3" cellspacing="1">
        <tr class="title">
            <td colspan="6"><strong>教案管理</strong></td>
        </tr>
       
              <tr>
            <ww:file
                    label="教案上传(1)"
                    name="teachingPlanPath1"
                    id="file1"
                    onchange="javascript:uploadTeachingPlan(1)"
                    />
        </tr>
        <tr>
            <td colspan="10">
                <li>请将文件压缩后上传,教案格式必须是 *.RAR或 *.ZIP格式,且不能为空!</li>
            </td>
        </tr>
        <tr>
            <ww:textarea
                    tooltip="教案说明要控制在一百字以内!"
                    label="教案说明(1)"
                    cols="87"
                    rows="5"
                    name="teachingPlan.planInfo1"
                    labelposition="col5"
                    value=""/>
        </tr>
        <tr>
            <ww:file
                    label="教案上传(2)"
                    name="teachingPlanPath2"
                    value=""/>
        </tr>
        <tr>
            <td colspan="10">
                <li>请将文件压缩后上传,教案格式必须是 **.RAR或 **.ZIP格式,且不能为空!</li>
            </td>
        </tr>
        <tr>
            <ww:textarea
                    tooltip="教案说明要控制在一百字以内!"
                    label="教案说明(2)"
                    cols="87"
                    rows="5"
                    name="teachingPlan.planInfo2"
                    labelposition="col5"
                    value=""/>
        </tr>
        <tr>
            <ww:submit value="添加" labelposition="col6"/>
        </tr>
    </table>
    <ww:actionerror/>
    <ww:fielderror/>
    <ww:actionmessage/>
</ww:form>

</body>
</html>

2.action代码:
public class TeachingPlanAction extends BaseTeachingPlanAction {

    public void upFile(File file, String name, String type) throws Exception {
        super.execute();
        if (file != null) {
            FileOutputStream outputStream1 = new FileOutputStream("d:/" + name);
            FileOutputStream outputStream2 = new FileOutputStream("d:/" + name);
            FileInputStream inputStream = new FileInputStream(file);
            byte[] buffer = new byte[1024];
            int len;
            while ((len = inputStream.read(buffer)) > 0) {
                outputStream1.write(buffer, 0, len);
                outputStream2.write(buffer, 0, len);
            }
            inputStream.close();
            outputStream1.close();
            outputStream2.close();
        } else {
        }
    }


    public String insertTeachingPlan() throws Exception {
        super.execute();
        upFile(teachingPlanPath1, teachingPlanPath1FileName, teachingPlanPath1ContentType);
        upFile(teachingPlanPath2, teachingPlanPath2FileName, teachingPlanPath2ContentType);
        String path1 = "";
        String path2 = "";

        if (teachingPlanPath1 != null) {
            path1 = teachingPlanPath1.getParent() + teachingPlanPath1FileName;
        }
        if (teachingPlanPath2 != null) {
            path2 = teachingPlanPath2.getParent() + teachingPlanPath2FileName;
        }
        teachingPlan.setTeachingPlanPath1(path1);
        teachingPlan.setTeachingPlanPath2(path2);
        this.teachingPlan.userId = teachingPlan.teachingPlanId;
        this.teachingPlanDAO.insertTeachingPlan(teachingPlan);
        addActionMessage("添加成功");
        return SUCCESS;
    }

3.TeachingPlan-xwork.xml配置文件
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.1.1//EN" "http://www.opensymphony.com/xwork/xwork-1.1.1.dtd">
<xwork>
    <include file="com/common/Base-xwork.xml"/>
    <package name="teachingPlan" extends="JpkAdminHomeWork" namespace="/admin">

<action name="insertTeachingPlan" class="com.modules.teachingPlan.action.TeachingPlanAction"
                method="insertTeachingPlan">
            <external-ref name="teachingPlanDAO">teachingPlanDAOProxy</external-ref>
            <interceptor-ref name="validationWorkflowStack"/>
            <result name="success" type="dispatcher">
                <param name="location">/admin/addTeachingPlan.jsp</param>
            </result>
            <result name="input" type="dispatcher">
                <param name="location">/admin/addTeachingPlan.jsp</param>
            </result>
        </action>
</package>
</xwork>
4.ibatis中SQL语句:
<insert id="insertTeachingPlan" parameterClass="teachingPlan">
        <![CDATA[
            INSERT INTO teachingplan
            (teachingPlanId,teachingName,lessonName,teachingPlanPath1,planInfo1,teachingPlanPath2,planInfo2,userId)
            VALUES
            (#teachingPlanId#,#teachingName#,#lessonName#,#teachingPlanPath1#,#planInfo1#,#teachingPlanPath2#,#planInfo2#,#userId#)
          ]]>
        <selectKey resultClass="int" keyProperty="teachingPlanId">
            SELECT LAST_INSERT_ID();
        </selectKey>
    </insert>
到此时就可以实现文件上传了.补充一句在这里我要上传两个文件
分享到:
评论

相关推荐

    struts2 关于多文件上传的使用

    在`upload.jsp`文件中,我们定义了一个表单,该表单允许用户选择多个文件进行上传。关键代码如下: ```jsp &lt;td&gt;&lt;s:file name="files[]" /&gt; &lt;td align="left"&gt;&lt;s:submit name="submit" value="上传" /...

    java教程!!2008 20小时快速学习

    Java提供了丰富的API来读写文件,包括File类、InputStream和OutputStream接口及其子类,以及BufferedReader和PrintWriter等类。通过这些,学员可以学习如何在程序中进行文件的读取、写入和追加操作。 WebWork是一个...

    java笔试题及部分答案

    Java 笔试题及答案 Java 笔试是一种常见的招聘方式,用于测试应聘者的 Java 技术知识。本篇文章将对 Java 笔试题进行总结,并提供...InputStream 和 OutputStream 是两个基本的流接口,前者是输入流,后者是输出流。

    j2ee学习过程~~~~~~~~~~~~~~~~~~~

    I/O流分为字节流、字符流和对象序列化,要熟悉各种流的类和接口,如InputStream和OutputStream用于字节流,Reader和Writer则处理字符流。多线程是并发编程的基础,需要掌握创建线程的两种方式,即继承Thread类和实现...

    J2EE总体的学习步骤

    2. IO流:熟悉字节流、字符流和对象序列化的概念,熟练运用各种流类,如InputStream、OutputStream、Reader、Writer等,并理解Unicode、GBK、UTF-8、ISO8859编码方式。 3. 多线程:学习线程的基本概念,掌握通过...

    j2ee学习计划

    2. 掌握字节流、字符流和对象序列化,熟悉各种流的类,如InputStream和OutputStream家族。 3. 学习多线程的创建,包括继承Thread类和实现Runnable接口,以及线程同步和互斥的概念。 4. 熟悉集合框架,包括Set、...

    java私塾全部笔记

    - InputStream、OutputStream、Reader、Writer之间的区别。 ##### 第十四章 多线程 - **线程概念** - 线程的基本概念和生命周期。 - **线程创建** - 继承Thread类或实现Runnable接口来创建线程。 - **同步机制**...

    关于j2ee的学习规划。关于学习的流程跟相应推荐的书籍

    - **IO流**:掌握各种类型的输入输出流(如`InputStream`, `OutputStream`, `Reader`, `Writer`等),并能够灵活运用这些类来处理文件或网络数据的读写操作。特别需要注意的是对象序列化的处理方法。 - **多线程**:...

    J2EE 学习计划J2EE 学习计划J2EE 学习计划J2EE 学习计划

    熟悉`InputStream`、`OutputStream`、`FileInputStream`、`FileOutputStream`等类的使用方法,可以帮助开发者更好地处理文件读写等基本操作。此外,掌握`BufferedReader`、`BufferedWriter`等流缓冲技术,以及`...

    Java学习的30个目标.txt

    - **流(Stream)**:熟悉InputStream、OutputStream等基本流类,以及BufferedStream等高级流类。 - **网络编程**:了解Socket编程,掌握TCP/IP协议的基本原理。 - **多线程**:理解线程生命周期,学会使用Thread类和...

    J2EE学习计划

    - **IO流**:熟悉字节流和字符流的操作,包括`InputStream`、`OutputStream`、`FileInputStream`、`FileOutputStream`等类。此外,还需了解对象序列化的过程。 - **多线程**:掌握多线程的创建方式,即继承`Thread`...

    Java设计模式

    - **Decorator模式**:如`InputStream`和`OutputStream`类族,可以通过装饰器增加新的功能。 - **Singleton模式**:如`java.lang.Runtime`,`java.awt.Desktop`等。 - **Factory模式**:如`Boolean.valueOf()`,用于...

Global site tag (gtag.js) - Google Analytics