文件上传

 

首先我们需要准备文件

  

复制代码
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>文件上传</title>
  </head>
  <body>
  <!-- 上传页面的准备 -->
  <s:form action="upload.action" enctype="multipart/form-data" method="post">
      <s:textfield name ="title" label ="标题"/><br/>
      <s:file name ="upload" label="选择文件"/><br/>
      <s:submit name ="submit" value ="上传文件"/>
  </s:form> 
  </body>
</html>
复制代码

//在struts.xml中配置相应的action

 <action name ="upload" class="action.UploadAction">
        <!--通过param参数设置保存目录的路径 -->
        <param name="savePath">/image</param>
        <result name="success">/upload_success.jsp</result>
    </action>

//在根据action节点找对应的类

复制代码
package action;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

public class UploadAction extends ActionSupport{
    //封装上传文件的属性
    private File upload;
    //封装上传文件的类型
    private String uploadContentType;
    //封装上传文件的名称
    private String uploadFileName;
    
    public File getUpload() {
        return upload;
    }
    public void setUpload(File upload) {
        this.upload = upload;
    }
    public String getUploadContentType() {
        return uploadContentType;
    }
    public void setUploadContentType(String uploadContentType) {
        this.uploadContentType = uploadContentType;
    }
    public String getUploadFileName() {
        return uploadFileName;
    }
    public void setUploadFileName(String uploadFileName) {
        this.uploadFileName = uploadFileName;
    }
    public void setSavePath(String savePath) {
        this.savePath = savePath;
    }
    //获取文件上传的路径
    private String savePath;
    @Override
    public String execute() throws Exception {
            //创建缓存数组
            byte [] buffer =new byte[1024];
            //读取文件
                FileInputStream fis =new FileInputStream(getUpload());
                //保存文件,并设置保存目录的路径
                FileOutputStream fos =new FileOutputStream(getSavePath()+"\\"+this.getUploadFileName());
                int length =fis.read(buffer);
                while(length>0){
                    //每次写入length长度的内容
                    fos.write(buffer,0,length);
                    length=fis.read(buffer);
                }
                fis.close();
                fos.flush();
                fos.close();
        return SUCCESS;
    }
    public String getSavePath(){
        return ServletActionContext.getServletContext().getRealPath(savePath);
    }
}
复制代码

//如果成功就去找成功页面

<!--成功页面  -->
 上传文件成功!
 您上传的文件是:<s:property value="uploadFileName"/><br/>
 文件类型:<s:property value="uploadContentType"/>

 

posted @ 2016-10-10 14:43  残殇--  阅读(137)  评论(0编辑  收藏  举报