1、首先我们定义struts.properties的文件上传中的规则如下
struts.action.extension=action  <!--以.action为我们提交的后缀名-->
struts.multipart.saveDir=c:/shengsiyuan  <!--保存我们上传文件的临时目录,此文件夹下面会生成临时文件,以.tmp为后缀名-->
struts.multipart.maxSize=1048576000  <!--规定文件的大小-->
当然以上文件的大小界定我们还可以这样在struts.xml文件中定义如下
<struts>
    <constant name="struts.multipart.maxSize" value="1048576000"></constant>
</struts>

2、页面fileUpload.jsp用于上传文件

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
 
    <title>My JSP 'fileUpload.jsp' starting page</title>
 
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
 
  </head>
 
  <body>
 
    <form action="fileUpload.action" method="post" enctype="multipart/form-data">
 
    username: <input type="text" name="username"><br>
    file: <input type="file" name="file"><br>
 
    <input type="submit" value="submit">
 
    </form>
 
  </body>
</html>
3、UploadAction.java 用于处理上传的文件的action
package com.shengsiyuan.struts2;
 
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;
 
public class UploadAction extends ActionSupport
{
    private String username;  //传入的username
 
    private File file;    //以File为类型的file
 
    private String fileFileName;  //小心命名,以file开头FileName固定
 
    private String fileContentType;
 
    public String getUsername()
    {
        return username;
    }
 
    public void setUsername(String username)
    {
        this.username = username;
    }
 
    public File getFile()
    {
        return file;
    }
 
    public void setFile(File file)
    {
        this.file = file;
    }
 
    public String getFileFileName()
    {
        return fileFileName;
    }
 
    public void setFileFileName(String fileFileName)
    {
        this.fileFileName = fileFileName;
    }
 
    public String getFileContentType()
    {
        return fileContentType;
    }
 
    public void setFileContentType(String fileContentType)
    {
        this.fileContentType = fileContentType;
    }
 
    @Override
    public String execute() throws Exception
    {
        String root = ServletActionContext.getRequest().getRealPath("/upload");//定义上传文件的路径
 
        InputStream is = new FileInputStream(file);
 
        //这里查看上传文件临时路径、以及临时文件的名字,在struts.properties已规定
        System.out.println("path: " + file.getAbsolutePath()); 
        System.out.println("file: " + file.getName());
 
        //这里查看文件的真实名称
        System.out.println("fileFileName: " + fileFileName);
 
        File destFile = new File(root, fileFileName);
 
        OutputStream os = new FileOutputStream(destFile);
 
        byte[] buffer = new byte[400];//定义以400字节的速度上传文件
 
        int length = 0;
 
        while(-1 != (length = is.read(buffer)))
        {
            os.write(buffer, 0, length);
 
           // Thread.sleep(1000);//为了能够查看临时文件存在,定义线程延时1秒
        }
 
        is.close();
        os.close();
 
        return SUCCESS;
 
    }
}
4、结果展示页fileUploadResult.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
 
    <title>My JSP 'fileUploadResult.jsp' starting page</title>
 
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">   
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
 
  </head>
 
  <body>
    username: <s:property value="username"/><br>
 
    name:<s:property value="fileFileName"/>
    <br>
    type:<s:property value="fileContentType"/>
  </body>
</html>

5、忘记struts.xml文件的配置了,你自己添加把

Servlet实现文件上传(深度)(二)的更多相关文章

  1. Servlet实现文件上传

    一.Servlet实现文件上传,需要添加第三方提供的jar包 下载地址: 1) commons-fileupload-1.2.2-bin.zip      :   点击打开链接 2) commons- ...

  2. Servlet实现文件上传,可多文件上传

    一.Servlet实现文件上传,需要添加第三方提供的jar包 接着把这两个jar包放到 lib文件夹下: 二: 文件上传的表单提交方式必须是POST方式, 编码类型:enctype="mul ...

  3. 配置servlet支持文件上传

    Servlet3.0为Servlet添加了multipart配置选项,并为HttpServletRequest添加了getPart和getParts方法获取上传文件.为了使Servlet支付文件上传需 ...

  4. jsp+servlet实现文件上传下载

    相关素材下载 01.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  5. java commons-fileupload servlet 多文件上传

    commons-fileupload servlet 多文件上传 需要引入的 jar 包. commons-fileupload-1.3.2.jar commons-io-2.2.jar 工程路劲:查 ...

  6. servlet web文件上传

    web文件上传也是一种POST方式,特别之处在于,需设置FORM的enctype属性为multipart/form-data. 并且需要使用文件域. servlet的代码比较关键是这几句: // 使用 ...

  7. servlet实现文件上传,预览,下载和删除

      一.准备工作 1.1 文件上传插件:uploadify: 1.2 文件上传所需jar包:commons-fileupload-1.3.1.jar和commons-io-2.2.jar 1.3 将数 ...

  8. Servlet实现文件上传和下载

    对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用Servlet获取上传文件的输入流然后再解析里面的请求参数是比较麻烦,所以一般选择采用apache的开源工具commo ...

  9. jsp+servlet实现文件上传

    上传(上传不能使用BaseServlet) 1. 上传对表单限制 * method="post" * enctype="multipart/form-data" ...

随机推荐

  1. 2.2 sikuli中编程运行

    http://www.cnblogs.com/Flint/p/4951703.html a.如果需要指定点击的具体坐标,需要使用click(patten.targetoffset(x, y)). b. ...

  2. 【sort】 基数排序

    下面这段问答摘自csdn: 把基数排序说成桶排序应该是没有太大问题的.总的说来,应该把这一类归为分配排序,由于分配排序的一些缺陷,主要是时间代价很差,改进成为桶式排序(bucket sort),而桶排 ...

  3. win8.1下安装ubuntu 14.0 4LTS

    1.前奏 电脑上已经安装了win8.1系统 2.准备工作 关闭win8.1的快速启动 步骤: 控制面板->电源选项->选择电源按钮的功能->更改不可用的设置,然后把"启用快 ...

  4. web项目docker化的两种方法

    标题所讲的两种方法其实就是创建docker镜像的两种方法 第一种:启动镜像后进入容器中操作,将需要的软件或者项目移动到容器中,安装或者部署,然后退出即可 第二种:编写dockerfile,将需要的镜像 ...

  5. 最近关于ACM训练与算法的总结

            到了大四以后越来越意识到基础知识的重要性,很多高屋建瓴的观点与想法都是建立在坚实的基础之上的, 招式只有在强劲的内力下才能发挥最大的作用,曾经有段时间我有这样的想法:我们出去以后和其他 ...

  6. 包(package)

    防止文件重名,包体现在文件夹上.包必须建立文件夹. 类名的全称是:包名.类名 javac   xx.java 命令编译的时候,不会建立对应的文件夹, 建立包对应的文件夹的命令,要用 javac -d ...

  7. Smoke Testing(冒烟测试)

    Smoke Testing 的概念最早源于制造业,用于测试管道.测试时,用鼓风机往管道里灌烟,看管壁外面是否有烟冒出来,以便检验管道是否有缝隙.这一测试显然比较初级,更深层一点的测试至少要进行渗油测试 ...

  8. C#,js数据排序及其操作

    List<int> listint=new List<int>{2,1,7,3,8,5,4,6};listint.Sort((x, y) => x - y); var a ...

  9. Disassembly3:variable

    Initializer C++ Primer上说:如果未初始化的Built-in type是定义在function外部的,那么它将自动被初始化为“0”:如果uninitialized的built-in ...

  10. AJAX封装(IE)

    function ajax(url,fnsucc,fnFaild){ if(window.XMLHttpRequest){ var oAjax = new XMLHttpRequest(); } el ...