<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 閱讀(950) 評論(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實現類即可。

    主站蜘蛛池模板: 久久水蜜桃亚洲av无码精品麻豆| 久久精品夜色噜噜亚洲A∨| 久久精品国产亚洲av麻豆色欲 | 国产精品久免费的黄网站| 亚洲无线一二三四区| 91精品免费久久久久久久久| 久久久久久亚洲精品成人| 日韩精品无码专区免费播放| 亚洲欧洲日韩不卡| 国产2021精品视频免费播放| 亚洲一区中文字幕| 免费黄色一级毛片| 免费一区二区三区在线视频| 国产亚洲精品成人a v小说| 精品无码一级毛片免费视频观看| 亚洲午夜无码久久久久| 中文字幕免费高清视频| 亚洲午夜无码久久| 亚洲成av人片不卡无码久久| 一级女性全黄生活片免费看| 亚洲AV无码久久精品蜜桃| **俄罗斯毛片免费| 亚洲成a人无码亚洲成www牛牛| 亚洲AV网站在线观看| 中国一级全黄的免费观看| 1区1区3区4区产品亚洲| 精品国产麻豆免费网站| 久久免费国产精品| 亚洲成在人线中文字幕| 国产免费131美女视频| 色播在线永久免费视频网站| 亚洲日韩中文字幕| 夜色阁亚洲一区二区三区| 青青青国产手机频在线免费观看| 在线观看亚洲AV每日更新无码| 免费在线观看的黄色网址| 日韩视频在线观看免费| 亚洲欧美日韩中文字幕一区二区三区 | 91成人免费观看网站| 羞羞网站在线免费观看| 亚洲AV成人无码久久精品老人|