struts2框架上传文件(参考)

来源:互联网 发布:java技术总监岗位职责 编辑:程序博客网 时间:2024/06/07 00:38

1.编写一个页面(单文件上传):
文件上传要素:
(1)表单的提交的方式需要是POST
(2)表单中需要有<input type=”file”>必须有name属性
(3)表单的enctype属性必须是multipart/form-data

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%    String path = request.getContextPath();    String basePath = request.getScheme() + "://"            + request.getServerName() + ":" + request.getServerPort()            + path + "/";%><!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title>上传文件</title>    </head>    <body>        <form enctype="multipart/form-data" method="post" action="<%=basePath %>/upload/upload.action">            <input type="file" name="upload" value="" />            资源描述:<input type="text" name="desc" value="" />            <input type="submit" name="submit" value="提交">        </form>    </body></html>

2.编写Action:

package com.ming.upload;import java.io.File;import java.io.FileReader;import java.io.Reader;import org.apache.commons.io.FileUtils;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;/* * 提供文件上传的三个属性:*   文件类型(File) 属性名与<input type=”file”>中name属性一致.*   字符串类型(String)   属性名前端与<input type=”file”>中name属性一致.后端+FileName;*   字符串类型(String)   属性名前端与<input type=”file”>中name属性一致.后端+ContentType; */public class UploadAction extends ActionSupport {    // 接收普通项的值:    private String desc;    public void setDesc(String desc) {        this.desc = desc;    }    /*     * 原理就是将前端文件流存储在临时文件中,并定义File对象为upload     */    private File upload;           //对应前端的文件input框的name属性值    private String uploadFileName; // 上传文件的文件名.  由File的属性名称和FileName拼接而成    private String uploadContentType; // 上传文件的MIME的类型.  由File的属性名称和ContentType拼接而成    public void setUpload(File upload) {        this.upload = upload;    }    public void setUploadFileName(String uploadFileName) {        this.uploadFileName = uploadFileName;    }    public void setUploadContentType(String uploadContentType) {        this.uploadContentType = uploadContentType;    }    @Override    public String execute() throws Exception {        System.out.println("desc="+desc);        // 获得文件上传的磁盘绝对路径.(当前服务器存放的磁盘位置)        String path = ServletActionContext.getServletContext().getRealPath(                "/upload");        // 创建一个文件对象:        File diskFile = new File(path+"\\"+uploadFileName);        System.out.println(uploadFileName);        System.out.println(uploadContentType);        //将上传文件的流临时存放到服务器上的临时文件        System.out.println("文件路径:" + upload.getPath());        //将上传的文件复制到服务器指定的目录中        FileUtils.copyFile(upload, diskFile);        /*         * 用输入流读取文件         */        Reader reader = new FileReader(upload);        char[] cbuf = new char[1024];        while(reader.read(cbuf) != -1) {            for (int i = 0; i < cbuf.length; i++) {                System.out.print(cbuf[i]);            }        }        reader.close();        return NONE;    }}

struts2文件上传参考链接1
struts2文件上传参考链接2

原创粉丝点击