<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 22, comments - 17, trackbacks - 0, articles - 15
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Struts 2多文件上傳

    Posted on 2008-05-15 10:42 碼農cz 閱讀(957) 評論(0)  編輯  收藏 所屬分類: As u
    很多應用都要求在一個界面中可以上傳多個文件,Struts 2框架也可以方便地支持多個文件同時上傳,一般可以使用數組和List來實現。

     使用數組上傳多個文件

    1upload.jsp文件

     使用數組實現多個文件上傳的JSP

    <%@ page

        language="java"

        contentType="text/html; charset=UTF-8"

        pageEncoding="UTF-8"%>

    <%@ taglib prefix="s" uri="/struts-tags" %>

    <html>

    <head>

    <title>使用數組實現多個文件上傳</title>

    </head>

    <body>

    <s:form action="doMultipleUploadUsingArray" method="POST" enctype="multipart/form-data">

        <s:file label="文件1" name="upload" />

        <s:file label="文件2" name="upload" />

        <s:file label="文件3" name="upload" />

        <s:submit value="上傳"/>  

    </s:form>

    </body>

    </html>

    2)在該form中,定義了3個具有相同名稱的文件域,所以需要在Action實現類中使用數組來封裝這3個文件域。使用數組多個上傳文件的業務控制器如代碼

    使用數組上傳多個文件的業務控制器

    package ch11;

    import java.io.File;

    import java.text.DateFormat;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    import java.util.Random;

    import org.apache.commons.io.FileUtils;

    import org.apache.struts2.ServletActionContext;

    import com.opensymphony.xwork2.ActionSupport;

    public class MultipleFileUploadUsingArrayAction extends ActionSupport {

        private File[] uploads;

        private String[] uploadFileNames;

        private String[] uploadContentTypes;

        private String[] dir;

        private String[] targetFileName;

        //屬性的gettersetter方法

        public File[] getUpload() {

            return this.uploads;

        }

        public void setUpload(File[] upload) {

            this.uploads = upload;

        }

        public String[] getUploadFileName() {

            return this.uploadFileNames;

        }

        public void setUploadFileName(String[] uploadFileName) {

            this.uploadFileNames = uploadFileName;

        }

        public String[] getUploadContentType() {

            return this.uploadContentTypes;

        }

        public void setUploadContentType(String[] uploadContentType) {

            this.uploadContentTypes = uploadContentType;

        }

        //文件上傳

        public String upload() throws Exception {

            // 獲得upload路徑的實際目錄

            String realPath = ServletActionContext.getRequest().getRealPath(

                    "/upload");

            //獲得實際目錄

            String targetDirectory = realPath;

            String[] mydir = new String[uploads.length];

            String[] tname = new String[uploads.length];

            for (int i = 0; i < uploads.length; i++) {

                // 生成保存文件的文件名稱

                tname[i] = generateFileName(uploadFileNames[i]);

                // 保存文件的路徑

                mydir[i] = targetDirectory + """" + tname[i];

                // 建立一個目標文件

                File target = new File(targetDirectory, tname[i]);

                // 將臨時文件復制到目標文件

                FileUtils.copyFile(uploads[i], target);

            }

            setDir(mydir);

            setTargetFileName(tname);

            return SUCCESS;

        }

        // 為上傳文件自動分配文件名稱,避免重復

        private String generateFileName(String fileName) {

            // 獲得當前時間

            DateFormat format = new SimpleDateFormat("yyMMddHHmmss");

            // 轉換為字符串

            String formatDate = format.format(new Date());

            // 隨機生成文件編號

            int random = new Random().nextInt(10000);

            // 獲得文件后綴名稱

            int position = fileName.lastIndexOf(".");

            String extension = fileName.substring(position);

            // 組成一個新的文件名稱

            return formatDate + random + extension;

        }

        //屬性的gettersetter方法

        public String[] getDir() {

            return dir;

        }

        public void setDir(String[] dir) {

            this.dir = dir;

        }

        public String[] getTargetFileName() {

            return targetFileName;

        }

        public void setTargetFileName(String[] targetFileName) {

            this.targetFileName = targetFileName;

        }

    }

    說明

    使用數組上傳多個文件同上傳單個文件非常類似,并不復雜。

    3)在配置文件中增加如下配置:

    <action name="doMultipleUploadUsingArray"

                class="ch11.MultipleFileUploadUsingArrayAction"

                method="upload">

                <result>/ch11/multipleUploadUsingArray-success.jsp</result>

                <result name="input">/ch11/multipleUploadUsingArray.jsp</result>

    </action>

    4multipleUploadUsingArray-success.jsp的內容如代碼所示。

    代碼 multipleUploadUsingArray-success.jsp內容

    <%@ page

        language="java"

        contentType="text/html; charset=UTF-8"

        pageEncoding="UTF-8"%>

    <%@ taglib prefix="s" uri="/struts-tags" %>

    <html>

    <head>

    <title>多個文件上傳示例</title>

    </head>

    <body>

    <table border="1">

    <!-- 使用迭代標簽-->

    <s:iterator value="dir" status="stat">

    <tr>

        <td>文件名稱<s:property value="%{#stat.index}" /></td>

        <td><s:property value="%{dir[#stat.index]}" /></td>

    </tr>  

    </s:iterator>

    </table>

    <table border="1">

    <!-- 使用迭代標簽-->

    <s:iterator value="uploadContentType" status="stat">

    <tr>

        <td>文件類型<s:property value="%{#stat.index}" /></td>

        <td><s:property value="%{uploadContentType[#stat.index]}" /></td>

    </tr>

    </s:iterator>

    </table>

    <table border="1">

    <!-- 使用迭代標簽-->

    <s:iterator value="+targetFileName" status="stat">

    <tr>

        <td>圖片<s:property value="%{#stat.index}" /></td>

        <td><img src="<s:property value="'/bookcode/upload/'+targetFileName[#stat.index]"/>"/></td>

    </tr>

    </s:iterator>

    </table>

    </body>

    </html>

    5)運行該示例,在瀏覽器中輸入http://localhost:8080/TestS/multipleUpload UsingArray.jsp,界面如圖所示。

        使用數組上傳多個文件界面

    6)在這里,選擇3gif文件,單擊“上傳”按鈕,結果如圖

     使用數組上傳多個文件結果

     使用List上傳多個文件

    使用List來上傳多個文件同數組基本相同,上傳JSP文件和success邏輯視圖的JSP文件均不用修改,只是需要相應的Action實現類即可。

    主站蜘蛛池模板: 亚洲国产精品婷婷久久| 亚洲?v女人的天堂在线观看| 亚洲精品国产精品乱码不卡√| 五级黄18以上免费看| 亚洲国产成人精品女人久久久 | 人妻仑乱A级毛片免费看| 国产午夜鲁丝片AV无码免费| 亚洲国产欧洲综合997久久| 免费观看日本污污ww网站一区| 国产精品亚洲а∨天堂2021| 亚洲精品偷拍视频免费观看| GOGOGO高清免费看韩国| 久久亚洲国产欧洲精品一| 国产高清不卡免费视频| 亚洲av综合avav中文| 91九色老熟女免费资源站| 97久久国产亚洲精品超碰热| 狼友av永久网站免费观看| 亚欧乱色国产精品免费视频| 亚洲日产无码中文字幕| 18禁男女爽爽爽午夜网站免费| 国产 亚洲 中文在线 字幕| 国产极品美女高潮抽搐免费网站| 免费毛片毛片网址| 亚洲av永久无码制服河南实里| 中文字幕亚洲免费无线观看日本| 亚洲精品第一国产综合野| 免费h黄肉动漫在线观看| 中文字幕乱码免费看电影| 亚洲无圣光一区二区| 国产精品无码一二区免费| 国产综合免费精品久久久| 亚洲国产成人久久77| 四虎成人精品在永久免费| 无码国产精品一区二区免费式芒果| 亚洲一区二区三区免费观看| 四虎精品亚洲一区二区三区| 99re6热视频精品免费观看| 亚洲精品第一国产综合亚AV| 久久亚洲国产午夜精品理论片| 成年女人18级毛片毛片免费|