zoukankan      html  css  js  c++  java
  • struts2上传单个文件

    项目目录:

    struts.xml配置:

    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
        <constant name="struts.devMode" value="true" />
    
        <package name="upload" namespace="/upload" extends="struts-default">
    
    
            <action name="upload" class="com.oracle.upload.UploadAction">
                <result>
                   /uploadsucc.jsp
                </result>
            </action>
        </package>

    上传图片jsp代码:刚开始一直报错,原来没写enctype,原来是没写form的enctype属性。enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。有三个参数:

    1,application/x-www-form-urlencoded。在发送前编码所有字符(默认)

    2,multipart/form-data。不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。

    3,text/plain。空格转换为 "+" 加号,但不对特殊字符编码。

    <body>
           <form action="<%=basePath%>upload/upload.action" method="post"   enctype="multipart/form-data">
               文件::<input type="file" name="image">
                       <input type="submit" value="上传"/>
           </form>
      </body>

    效果:

    UploadAction代码:

    package com.oracle.upload;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.struts2.ServletActionContext;
    
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    public class UploadAction extends ActionSupport{
        
        private File image;  //接收jsp传的参数
        
        /**
         * imageFileName是Struts2内置的属性。值是上传的文件名,如1.jpg。
         * 用<s:property value=""/>标签可以显示其值。<s:debug>标签在值栈里也可以看到。
         */
        private String imageFileName; 
        
        
        public  String  execute() throws IOException{
            
            /**
             * Path---E:	omcat7.0webappsStruts2_FileUpload2images,
             * ServletActionContext.getServletContext()得到项目的根目录。
             * 再.getRealPath("/images")就是项目根目录下的images文件夹。
             */
            String path = ServletActionContext.getServletContext().getRealPath("/images");
            
            //String path = "E:/project/images";还可以自己new一个存放文件的路径。
            //System.out.println("Path---"+path);
            
            if(image !=  null){
                
                /**
                 * new一个我们存放文件的:目录+文件名
                 * 父路径:new File(path)就是E:	omcat7.0webappsStruts2_FileUpload2images
                 * 子文件:就是上传的文件名:如1.jpg
                 * 所以全路径为:E:	omcat7.0webappsStruts2_FileUpload2images1.jpg
                 */
                File  savefile = new File(new File(path),imageFileName);
                
                //System.out.println("保存图片的绝对路径+图图片名:"+savefile.getAbsolutePath());
                
                
                if(! savefile.getParentFile().exists()){  
                    
                    //如果父路径不存在,创建他的所有路径。
                    
                    savefile.getParentFile().mkdirs();
                    //*将image拷贝到我们的文件夹
                    FileUtils.copyFile(image, savefile);
                    
                    
                }else{
                    //如果父路径存在,直接拷贝。
                    FileUtils.copyFile(image, savefile);
                    
                }
                
                ActionContext.getContext().getSession().put("message", "上传成功");
            }else{
                ActionContext.getContext().getSession().put("message", "上传失败");
            }
            
            return  SUCCESS;
        }
    
        public File getImage() {
            return image;
        }
    
        public void setImage(File image) {
            this.image = image;
        }
    
        public String getImageFileName() {
            return imageFileName;
        }
    
        public void setImageFileName(String imageFileName) {
            this.imageFileName = imageFileName;
        }
    }

    上传成功uploadsucc.jsp:注意加上<%@ taglib uri="/struts-tags" prefix="s" %>标签。

     <body>
      ${message}<br>
        <img src="<%=basePath%>images/${imageFileName}" style=" 300px;height: 200px">
        <br/>
        <s:property value="getImageFileName()"/>
        <s:debug></s:debug>
        <hr/>
        <form action="upload/upload.action" method="post" enctype="multipart/form-data">
            选择文件<input type="file" name="image">
            <input type="submit" value="上传"/>
        </form>
      </body>

    上传成功效果:

  • 相关阅读:
    [易学原创作品]QQ/MSN实现原理: C# UDP穿越NAT,UDP打洞,UDP Hole Punching,P2P
    工作流设计
    jquery 固定行列可编辑表格jfixed
    oracle 数据库实体生成工具
    c#做的查看sybase数据库表
    简单实用ORM框架
    Js 弹出框 返回值的两种常用方法
    数据结构 Jimmy
    js中的对象方法中this指向问题
    js中构造函数中this指向问题
  • 原文地址:https://www.cnblogs.com/lihaoyang/p/4835830.html
Copyright © 2011-2022 走看看