zoukankan      html  css  js  c++  java
  • 框架学习之Struts2 第四节 文件上传

    1. 上传单个文件的步骤

    第一步:引入jar包,后者jar包是很重要的,利用它的FileUtils处理上传的文件

    第二步:把form表单中的 enctype 设置为:multipart/form-data

    表单中包含一个<input   type=”file” >

    第三步:在Action类中添加一些属性

    注意:后台的File对象的名称要和前台的input的name相同,这样struts2就可以利用反射技术调用set方法给File赋值了

    也就是说,Action类中的File就变成了前台上传的文件了

    16_1

    测试:

    在原项目中新增一个页面 file.jsp

    主要内容:
    <body>
    <s:form enctype="multipart/form-data" method="post" action="file" namespace="/yinger" >
    File to upload:
    <br>
    <input type="file" name="file" /><br>
    <input type="submit" name="submit" value="提交" /><br>
    </s:form>
    </body>  
    添加一个action

    <action name="file" class="com.yinger.HelloWorld"
    method
    ="file">
    <result name="file">/message.jsp</result>
    </action>  
    Action类的方法:

    private File file;
    private String fileFileName;
    private String fileContentType;

    public String file() throws Exception{
    String realpath
    = ServletActionContext.getServletContext().getRealPath("/images");//得到上下文路径
    File newFile = new File(realpath);//新建一个File,如果不存在这个目录就创建出这个目录
    if(!newFile.exists()){
    newFile.mkdirs();
    }
    FileUtils.copyFile(file,
    new File(newFile, fileFileName));//然后复制文件
    message="文件上传成功!<br>";
    message
    +="文件名称:"+fileFileName;
    message
    +="<br>文件类型:"+fileContentType;
    return "file";
    }

    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;
    }

      

    测试结果:

    输入:http://localhost:8080/struts2test/file.jsp

    结果:

    查看文件:

    已经上传到了指定的文件夹了!

    还有一个问题就是,注意上传的文件大小的限制,这个是可以设置的

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

    value就是设置文件的大小,注意它是所有文件大小的总和,默认是 2M

    2.上传多个文件的步骤

    它的步骤和单个文件上传其实差不多,只不过file变成了文件的数组而已,保存时循环一下就好了

    注意,jsp中定义的type为file的input的name要相同

    17

    多文件上传方法类似,再次略过了。。。

  • 相关阅读:
    #负分小组WEEK1#本周工作小结+下周计划
    #负分小组WEEK1#软件开发之路——需求获取与相关建模
    #负分小组WEEK1#第一次会议纪要
    #负分小组WEEK1#软件开发之路——准备阶段
    #负分小组WEEK1#确定项目——“宝宝睡吧!”儿童睡前服务服务软件+计划分工
    p6spy sql 执行记录
    apache common-lang3 工具类
    根据 ip 定位
    springcloud 与 spring boot 版本对应关系
    PowerDesign 基于mysql 数据库建模
  • 原文地址:https://www.cnblogs.com/yinger/p/2117051.html
Copyright © 2011-2022 走看看