国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Struts2(十五)實現文件上傳

2019-11-14 23:38:00
字體:
來源:轉載
供稿:網友
Struts2(十五)實現文件上傳一、導入包
  • 需要將commons-fileupload和commons-io包和struts包一起導入

實現步驟:

  1. jsp頁面實現客戶端選擇上傳文件
  2. 配置Struts.xml,攔截器會自動接收上傳的文件
  3. 在Action中實現代碼上傳文件存入服務器中
  4. 跳轉至新頁面展示上傳的文件
二、單個文件上傳

上傳頁面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!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>單個文件上傳</title></head><body><form action="doUpload.action" method="post" enctype="mult

上傳成功頁面

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%> <%@ taglib 

UploadAction

package com.pb.web.action;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import org.apache.commons.io.IOUtils;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport {    //上傳文件全路徑、類型、文件名    private File upload;    private String uploadContentType;    private String uploadFileName;    //新文件保存路徑和名稱    private String savePah;    public String doUpload() throws IOException{        System.out.println(upload);        System.out.println(uploadContentType);        System.out.println(uploadFileName);        String newFileName=System.currentTimeMillis()+uploadFileName.substring(uploadFileName.lastIndexOf("."));        System.out.println("新的文件名:"+newFileName);        //獲取上傳路徑        savePah=ServletActionContext.getServletContext().getRealPath("/upload/"+newFileName);        System.out.println("上傳保存的路徑和名稱:"+savePah);        //使用文件輸入、輸出流寫入文件        FileInputStream fis=new FileInputStream(upload);        FileOutputStream fos=new FileOutputStream(savePah);        //設置緩沖區大小        /*byte[] bytes=new byte[1024];        //讀取文件        int length=fis.read(bytes);        while(length>0){            //寫入文件            fos.write(bytes);            length=fis.read(bytes);        }*/        //復制文件        IOUtils.copy(fis, fos);        fos.flush();        fos.close();        fis.close();                return SUCCESS;    }    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 getSavePah() {        return savePah;    }    public void setSavePah(String savePah) {        this.savePah = savePah;    }            }

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <constant name="struts.devMode" value="true" />   <package name="default" namespace="/" extends="struts-default">    <action name="doUpload" class="com.pb.web.action.UploadAction" method="doUpload">    <result name="success">    /singleUploadSuccess.jsp    </result>    <result name="error">    /error.jsp    </result>    <result name="input">    /singleUpload.jsp    </result>    </action>    </package></struts>
三、限制文件大小
  • 在struts.xml中配置常量
<constant name="struts.multipart.maxSize" value="5000000"/>5M大小

在action下配置攔截器

<interceptor-ref name="fileUpload">    <param name="maximumSize">5000000</param>        </interceptor-ref>    <interceptor-ref name="defaultStack"></interceptor-ref>

五、限制文件類型
<interceptor-ref name="fileUpload">    <param name="allowedTypes">image/pjpeg,image/jpeg,image/gif,image/png</param>    <param name="maximumSize">5000000</param>        </interceptor-ref>    <interceptor-ref name="defaultStack"></interceptor-ref>

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <constant name="struts.devMode" value="true" />    <constant name="struts.multipart.maxSize" value="1000000" />    <constant name="struts.multipart.saveDir" value="/tmp"/>    <package name="default" namespace="/" extends="struts-default">    <action name="doupload" class="com.pb.web.action.UploadAction" method="upload">    <interceptor-ref name="fileUpload">            <param name="maximumSize">40000</param>             <param name="allowedTypes">image/jpeg,image/pjpeg,image/gif,image/png</param>        </interceptor-ref>         <interceptor-ref name="defaultStack"></interceptor-ref>    <result name="success">    /oneUploadSuccess.jsp    </result>    <result name="input">    /error.jsp    </result>    </action>    </package></struts>

六、多個文件上傳

和單個文件上傳一個只是接收參數變為數組

mulUpload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"    pageEncoding="UTF-8"%><!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>多個 文件上傳</title><script type="text/Javascript" src="js/jquery-1.11.2.min.js"></script><script type="text/javascript">function addFile(){    /*  獲取父元素*/    var parent=$("#add").parent();    /*創建新的節點  */    var file=$("<input type='file' name='upload' /><br/>");    /* 添中節點 */    parent.append(file);    }</script></head><body><form action="doupload.action" method="post" enctype="multipart/form-data"><input type="file" name="upload" /><input type="button" value="繼續添加"  onclick="addFile();" id="add"/><input type="submit" value="上傳" /><br/></form></body></html>

error.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>上傳失敗</title></head><body>上傳失敗<a href="mulUpload.jsp">返回</a><s:debug/></body></html>

mulUploadSuccess.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>上傳成功</title></head><body><!--顯示上傳的圖片  --><s:iterator value="savePath" var="i"><img alt="圖片" src="<s:property value='#i'/>"></s:iterator><s:debug/></body></html>

UploadAction.java

package com.pb.web.action;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.ArrayList;import java.util.List;import org.apache.commons.io.IOUtils;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class UploadAction extends ActionSupport {    // 文件上傳路徑、類型、名稱    private List<File> upload;    private List<String> uploadFileName;    private List<String> uploadContentType;    // 新的文件名稱    private List<String> savePath=new ArrayList<String>();    public String upload() throws IOException {        for (int i = 0; i < upload.size(); i++) {            //重命名 用長時間+原來的文件名            String newFileName = System.currentTimeMillis()+""+uploadFileName.get(i);            System.out.println("新的文件名:"+newFileName);        //獲取上傳路徑            //將新的路徑和名稱添加入集合            savePath.add(ServletActionContext.getServletContext().getRealPath("/upload/"+newFileName));            System.out.println(savePath.get(i));            //讀取文件            FileInputStream fis=new FileInputStream(upload.get(i));            //寫入文件            FileOutputStream fos=new FileOutputStream(savePath.get(i));            //將文件從輸入流,復制到輸出流中            IOUtils.copy(fis, fos);            //強制刷新輸出流,清空緩沖區            fos.flush();            fos.close();            fis.close();        }        return SUCCESS;    }    public List<File> getUpload() {        return upload;    }    public void setUpload(List<File> upload) {        this.upload = upload;    }    public List<String> getUploadFileName() {        return uploadFileName;    }    public void setUploadFileName(List<String> uploadFileName) {        this.uploadFileName = uploadFileName;    }    public List<String> getUploadContentType() {        return uploadContentType;    }    public void setUploadContentType(List<String> uploadContentType) {        this.uploadContentType = uploadContentType;    }    public List<String> getSavePath() {        return savePath;    }    public void setSavePath(List<String> savePath) {        this.savePath = savePath;    }}

struts.xml

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"    "http://struts.apache.org/dtds/struts-2.3.dtd"><struts>    <constant name="struts.enable.DynamicMethodInvocation" value="false" />    <constant name="struts.devMode" value="true" />    <!--設置文件大小攔截器  -->    <constant name="struts.multipart.maxSize" value="10000000"></constant>        <constant name="struts.multipart.saveDir" value="/tmp"/>    <package name="default" namespace="/" extends="struts-default">    <action name="doupload" class="com.pb.web.action.UploadAction" method="upload">        <interceptor-ref name="fileUpload">    <!--設置文件類型攔截器  -->    <param name="allowedTypes">image/jpeg,image/pjpeg,image/png</param>    <!--設置文件大小攔截器  -->    <param name="maximumSize">5000000</param>    </interceptor-ref>    <!-- struts默認的攔截器 -->    <interceptor-ref name="defaultStack" />        <result name="success">    /mulUploadSuccess.jsp    </result>    <result name="input">    /error.jsp    </result>    </action>    </package></struts>

更詳細的請參考:struts下載包中的幫助文檔:

file://stuts2/struts2-2.3.4.1-all/struts-2.3.4.1/docs/WW/file-upload.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 棋牌| 佛坪县| 乌鲁木齐市| 左云县| 松原市| 太仓市| 海淀区| 丘北县| 法库县| 威远县| 潞城市| 山西省| 桐庐县| 精河县| 星子县| 福海县| 喀什市| 大关县| 筠连县| 瑞安市| 吉木萨尔县| 江西省| 交口县| 湘潭市| 宜章县| 屏南县| 水富县| 昭通市| 泾川县| 兰西县| 仙桃市| 广河县| 建昌县| 响水县| 开封县| 东乌珠穆沁旗| 鄂尔多斯市| 毕节市| 丰城市| 唐山市| 滕州市|