• 文件上传


    首先我们需要准备文件

      

    复制代码
    <%@ 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"/>
  • 相关阅读:
    Error C1189: #error: Please use the /MD switch for _AFXDLL builds
    block,inline和inline-block概念和区别(转载)
    jQuery学习--Code Organization Concepts
    Kafka— —副本(均衡负载)
    Kafka实践1--Producer
    漫画HDFS工作原理(转)
    JavaScript学习笔记3
    搭建简单SBT工程实践
    Hive SQL测试
    SparkSql常用语句
  • 原文地址:https://www.cnblogs.com/zsping/p/5945770.html
Copyright © 2020-2023  润新知