zoukankan      html  css  js  c++  java
  • 备份_文件上传(图片上传)

    20:49:25

    1.succ.jsp

    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
        <%@ taglib prefix = "s" uri ="/struts-tags" %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Succ</title>
    </head>
    <body>
    上传成功
    <div>
    文件为:<s:property value="file"/>
    <img src="<s:property value="'upload/'+uploadFileName"/>"/>
    </br>
    </div>
    
    
    </body>
    </html>

    2.UploadAction.java

    package action;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.Date;
    import java.util.Map;
    
    import javax.servlet.ServletContext;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.struts2.ServletActionContext;
    import org.omg.CORBA.PRIVATE_MEMBER;
    
    import com.opensymphony.xwork2.ActionSupport;
    
    import jdk.nashorn.internal.ir.RuntimeNode.Request;
    
    public class UploadAction extends ActionSupport {
        private File upload;
        private String uploadContentType;
        private String uploadFileName;
        private String savePath;
        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 String getSavePath() {
            return ServletActionContext.getServletContext().getRealPath("/WEB-INF"+savePath);
        }
        public void setSavePath(String savePath) {
            this.savePath = savePath;
        }
        @Override
        public String execute() throws Exception {
            if(uploadFileName!=null){
                FileOutputStream fos =new FileOutputStream(getSavePath()+"\"+getUploadFileName());
                FileInputStream fis = new FileInputStream(getUpload());
                byte [] buffer= new byte [1024];
                int len =0;
                while((len =fis.read(buffer))>0){
                    fos.write(buffer,0,len);
                }
                System.out.println("uploadFileName"+uploadFileName);
                FileUtils.copyFile(upload,new File("d://"+uploadFileName));
            }else{
                System.out.println("uploadFileName"+uploadFileName);
            }
            
            return SUCCESS;
        }
    
    }

    3.upload.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@ taglib prefix = "s" uri ="/struts-tags" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>upload file</title>
    </head>
    <body>
    
    <s:form action="upload.action" enctype="multipart/form-data">
    <s:file name="upload" label="选择文件"/></br>
    <s:submit value="上传"/>
    </s:form>
    </body>
    </html>

    4.struts.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
    <!-- 注意:编程或运行时要联网 -->
    <struts>
        <!-- namespace:URL的前缀,extends:扩展或继承自,struts-default -->
        <constant name="struts.custom.i18n.resources" value="mess"/>
        <constant name="struts.i18n.encoding" value="Utf-8"/>
        
        <package name="abc" namespace="/" extends="struts-default"><!--  package="?"?为模块的名字,并且需要继承struts-default -->
    
        <interceptors>
            <interceptor name="checkLogin" class="action.LoginInterceptor"></interceptor>
            <interceptor-stack name="myInterceptorStack"> 
                    <interceptor-ref name="checkLogin"></interceptor-ref> 
                    <interceptor-ref name="defaultStack"></interceptor-ref> 
             </interceptor-stack> 
        </interceptors>
        
        <default-interceptor-ref name="myInterceptorStack"></default-interceptor-ref>
        <global-results>
                <result name="Login22">/Login.jsp</result>
        </global-results>
        
            <action name="Login" class="action.Loginaction"><!-- 原来这里的class需要用的是需要调用的全路径名,一个struts的请求就是一个action -->
                <!-- 注意大小写一致 -->
                <result name="success">/succ.jsp</result><!-- 这里的name就是给提交到这里的action就是相应 -->
                <result name="fair" type="redirect">/fair.jsp</result>
                <result name="input">/index.jsp</result>
            </action>
            
            <action name="Login2" class="action.Loginaction2"><!-- 原来这里的class需要用的是需要调用的全路径名,一个struts的请求就是一个action -->
                <!-- 注意大小写一致 -->
                <result name="success">/Query.jsp</result><!-- 这里的name就是给提交到这里的action就是相应 -->
                <result name="fair" type="redirect">/Login.jsp</result>
                <result name="admin" type="redirect">/product_manage.jsp</result>
                <result name="input">/Login.jsp</result>
            </action>
            
            <action name="register" class="action.registeraction"><!-- 原来这里的class需要用的是需要调用的全路径名,一个struts的请求就是一个action -->
                <result name="success">/Login.jsp</result><!-- 这里的name就是给提交到这里的action就是相应 -->
                <result name="fair" type="redirect">/register.jsp</result>
                <result name="input">/Login.jsp</result>
            </action>
            
            <action name="Query" class="action.Dispartaction"><!-- 原来这里的class需要用的是需要调用的全路径名,一个struts的请求就是一个action -->
                <!-- 注意大小写一致 -->
                <result name="success">/Dispart.jsp</result><!-- 这里的name就是给提交到这里的action就是相应 -->
                <result name="fair" type="redirect">/Query.jsp</result>
                <result name="input">/Query.jsp</result>
            </action>
            
            <action name="product_manager_add" class="action.product_addaction"><!-- 原来这里的class需要用的是需要调用的全路径名,一个struts的请求就是一个action -->
                <!-- 注意大小写一致 -->
                <result name="add">/commodity_add.jsp</result><!-- 这里的name就是给提交到这里的action就是相应 -->
                <result name="input">/product_manager.jsp</result>
            </action>
             
             <action name="product_manager_delete" class="action.product_deleteaction"><!-- 原来这里的class需要用的是需要调用的全路径名,一个struts的请求就是一个action -->
                <!-- 注意大小写一致 -->
                <result name="delete">/commodity_delete.jsp</result><!-- 这里的name就是给提交到这里的action就是相应 -->
                <result name="input">/product_manager.jsp</result>
            </action>
            
            <action name="product_manager_check" class="action.product_checkaction"><!-- 原来这里的class需要用的是需要调用的全路径名,一个struts的请求就是一个action -->
                <!-- 注意大小写一致 -->
                <result name="check">/user.jsp</result><!-- 这里的name就是给提交到这里的action就是相应 -->
                <result name="input">/product_manager.jsp</result>
            </action>
        </package>
        <package name="lee" extends="struts-default">
            
            
            <action name="upload" class="action.UploadAction">
            <param name="savePath">/upload</param>
            <result name="success">/succ.jsp</result>
            <result name="input">/upload.jsp</result>
                
            </action>
        </package>
    </struts>

    2018-05-25

    Uploadaction.java

    package action;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.Date;
    import java.util.Map;
    
    import javax.servlet.ServletContext;
    
    import org.apache.commons.io.FileUtils;
    import org.apache.struts2.ServletActionContext;
    import org.omg.CORBA.PRIVATE_MEMBER;
    
    import com.mysql.cj.api.Session;
    import com.opensymphony.xwork2.ActionContext;
    import com.opensymphony.xwork2.ActionSupport;
    
    import jdk.nashorn.internal.ir.RuntimeNode.Request;
    
    public class UploadAction extends ActionSupport {
    	private String filename; 
    	private File upload;
    	private String uploadContentType;
    	private String uploadFileName;
    	private String savePath;
    	public String getFilename() {
    		return filename;
    	}
    	public void setFilename(String filename) {
    		this.filename = filename;
    	}
    	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 String getSavePath() {
    		return ServletActionContext.getServletContext().getRealPath("/"+savePath);
    	}
    	public void setSavePath(String savePath) {
    		this.savePath = savePath;
    	}
    	@Override
    	public String execute() throws Exception {
    		/*if(uploadFileName!=null){
    			FileOutputStream fos =new FileOutputStream(getSavePath()+"\"+getUploadFileName());
    			FileInputStream fis = new FileInputStream(getUpload());
    			byte [] buffer= new byte [1024];
    			int len =0;
    			while((len =fis.read(buffer))>0){
    				fos.write(buffer,0,len);
    			}
    			System.out.println("uploadFileName"+uploadFileName);
    			FileUtils.copyFile(upload,new File("d://"+uploadFileName));
    			ActionContext context = ActionContext.getContext(); //Action上下文
    			//ActionContext包含所有与Web容器相关的对象
    			//Map session = context.getSession();
    			Map<String, Object> session = context.getSession();
    			session.put("uploadFileName",uploadFileName);
    		}else{
    			System.out.println("uploadFileName"+uploadFileName);
    		}*/
    		 File dir = new File(getSavePath());  
    	        if(!dir.exists()) dir.mkdir();  
    	        File f = new File(getSavePath() + "\" + getUploadFileName());  
    	        FileOutputStream fos = new FileOutputStream(f);  
    	        FileInputStream fis = new FileInputStream(getUpload());  
    	        byte[] buffer = new byte[1024];  
    	        int len = 0;  
    	        while((len = fis.read(buffer)) > 0){  
    	            fos.write(buffer,0,len);  
    	        }  
    	     
    		return SUCCESS;
    	}
    
    }
    

      struts:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd">
    <!-- 注意:编程或运行时要联网 -->
    <struts>
        <!-- namespace:URL的前缀,extends:扩展或继承自,struts-default -->
        <package name="abc" namespace="/" extends="struts-default">
            <interceptors>
                <interceptor name="loginInterceptor" class="interceptor.LoginInterceptor"></interceptor>
                <interceptor-stack name="loginInterceptorStack">
                    <interceptor-ref name="loginInterceptor"/>
                    <interceptor-ref name="defaultStack"/>
    
                </interceptor-stack>
            </interceptors>
            
            <!-- <default-interceptor-ref name="loginInterceptorStack"/> -->
            
            <global-results>  
                <result name="login">/Login.jsp</result>  
            </global-results>  
            
            <action name="Login" class="action.LoginAction">
                <!-- 注意大小写一致 -->
                <result name="loginfail">/Login_fail.jsp</result>
                <result name="mainshop" >/main_shop.jsp</result>
                <result name="checkfail" >/Checkcode_fail.jsp</result>
                <result name="input">/Login.jsp</result>
            </action>
            <action name="Register" class="action.RegisterAction">
                <result name="registerfail">/Register_fail.jsp</result>
                <result name="registersuccess">/Register_success.jsp</result>
                <result name="checkfail2">/Checkcode_fail2.jsp</result>
            </action>
            <action name="admin" class="action.AdminAction">
                <result name="loginfail">/Login_fail.jsp</result>
                <result name="bsm">/Bsm.jsp</result>
                <result name="checkfail">/Checkcode_fail.jsp</result>
            </action>
            <action name="addbooks" class="action.AddbookAction">
                <interceptor-ref name="loginInterceptorStack"/>
                <result name="bsm">/Bsm.jsp</result>
            </action>
            
            <action name="Upload" class="action.FileUploadAction">  
                <interceptor-ref name="loginInterceptorStack"/>
                <interceptor-ref name="fileUpload">   <!--配置fileUpload的拦截器-->
                <param name="allowedTypes"> image/bmp,image/png,image/gif,image/jpeg </param>   <!--配置允许上传的文件类型-->     
                <param name="maximumSize">5242880</param>      <!--配置允许上传的文件大小单位字节-->  
                </interceptor-ref>  
                <interceptor-ref name="defaultStack"/>  
                <param name="savePath">/upload</param>
                <result name="success" >/main_shop.jsp</result>
                <result name="input">/FileUpload.jsp</result>
                <!-- <result name="login">/Login.jsp</result> -->
            </action>
            
        </package>
    </struts>

    upload.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@ taglib prefix = "s" uri ="/struts-tags" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>upload file</title>
    </head>
    <body>
    
    <s:form action="upload.action" enctype="multipart/form-data">
    <s:file name="upload" label="选择文件"/></br>
    <s:submit value="上传"/>
    </s:form>
    </body>
    </html>

     Login.jsp:

      1 <%@ page language="java" contentType="text/html; charset=utf-8"
      2     pageEncoding="utf-8"%>
      3      <%@ taglib prefix = "s" uri ="/struts-tags" %>
      4 <!doctype html>
      5 <html>
      6 <head>
      7 <meta charset="utf-8">
      8 <title>验证码</title>
      9 <style>
     10 form{padding:0px 15px 15px 120px;}  
     11 form{500px;height:300px;} 
     12 form fieldset{border:0;align:center;} 
     13 form label{display:inline-block;60px;text-align:right}  
     14 input{240px;height:30px;}    
     15 #code{  
     16                 font-family:Arial;  
     17                 font-style:italic;  
     18                 font-weight:bold;  
     19                 border:0;  
     20                 letter-spacing:2px;  
     21                 color:blue; 
     22                 50px;
     23                 height:40px; 
     24             }
     25 
     26 #box{position:fixed;left:0px;right:0px;600px;margin-left:auto;margin-right:auto;top:100px;} 
     27 #submit{
     28     position:absolute;
     29     left:200px;
     30     right:300px;    
     31 }
     32 </style>
     33 <script>
     34  var code;
     35     function createCode(){
     36         code = '';                        //首先默认code为空字符串
     37         var codeLength = 4;
     38         var codeV = document.getElementById('code');
     39    
     40         var random = new Array(0,1,2,3,4,5,6,7,8,9);
     41         for(var i = 0; i < codeLength; i++){//设置随机数范围,这设置为0 ~ 10
     42              var index = Math.floor(Math.random()*10);
     43              code += random[index]; 
     44         }
     45         codeV.value = code;                 //将拼接好的字符串赋值给展示的Value
     46     }
     47     function validate(){
     48         var oValue = document.getElementById('input').value.toUpperCase();
     49         if(oValue ==0){
     50             alert('请输入验证码');
     51         }else if(oValue != code){
     52             alert('验证码不正确,请重新输入');
     53             oValue = ' ';
     54             request.getRequestDispatcher("Login.jsp").forward(request, response);
     55             createCode();
     56         }
     57     }
     58     window.onload = function (){
     59         createCode();
     60     }
     61  </script>
     62 </head>
     63 
     64 <body>
     65 <div id="box">
     66 
     67 <h1 style="font-size:20x;font-family:'微软雅黑';">用户登录</h1>
     68         <form action= "Login2.action" method = "post" style="background:#cccccc">
     69         
     70       <fieldset>
     71       <label>用户名:</label>
     72       <input type ="text" name = "username" required="required">
     73             <p>
     74             <label>密码:</label>
     75             <input type="password" name = "password" required="required">
     76             </p>
     77             <p>
     78             <label>验证码</label>
     79             <input type = "text" name="certify2" id = "input" value="" required="required"/>  
     80             <input type = "button" id="code" onclick="createCode()"/>              
     81             </p>
     82             <p>  
     83                 <a href="register.jsp">没注册</a>  
     84               </p>  
     85               <p >
     86                <input type = "submit" value = "Login" name="submit"  id="submit" onclick="validate()"> 
     87             </p>
     88         </center>
     89       </fieldset>    
     90     </form>
     91 
     92 </center>
     93 <div>
     94 
     95 <button onclick="window.location.href='FileUpload.jsp'">上传头像</button> 
     96 </div>
     97 </div>
     98 <%
     99 String uploadFilename = (String)session.getAttribute("uploadFileName");
    100 if(uploadFilename!=null){
    101 
    102 %>
    103 <div>
    104 <s:property value="FileName"/>
    105  <img src="<s:property value = "'upload/'+ uploadFileName"/>"/>   
    106 </br>
    107 </div>
    108 <%
    109 
    110 
    111 }
    112 %>
    113 
    114 </body>
    115 
    116 
    117 </html>
    当你在凝视深渊时,深渊也在凝视你。
  • 相关阅读:
    $POST数组论证($GET || $COOKIE || $REQUEST 同理)
    PHP之preg_replace()与ereg_replace()正则匹配比较讲解
    PHP之mysql_real_escape_string()函数讲解
    浅析白盒审计中的字符编码及SQL注入
    PHP之list()函数讲解
    PHP之implode与explode函数讲解
    PHP之Error与Logging函数讲解
    Nextcloud私有云盘在Centos7下的部署笔记
    Linux下路由配置梳理
    实验c语言不同类型的指针互用(不推荐只是学习用)
  • 原文地址:https://www.cnblogs.com/zwz178/p/9091075.html
Copyright © 2011-2022 走看看