麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

JS+Struts2多文件上傳實例詳解

2024-07-14 08:42:11
字體:
來源:轉載
供稿:網友

本文實例為大家分享了JS Struts2多文件上傳的具體代碼,供大家參考,具體內容如下

1、JSP頁面: 

JS控制增加刪除多個上傳文件框,代碼如下: 

<%@ page language="java" pageEncoding="UTF-8"%>  <%@ taglib prefix="s" uri="/struts-tags"%>   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml">    <head>      <%@include file="../../_head.html"%>      <title>文件上傳</title>      <meta http-equiv="pragma" content="no-cache">      <meta http-equiv="cache-control" content="no-cache">      <meta http-equiv="expires" content="0">      <script language="javascript" type="text/javascript"       src="../js/common/common.js"></script>      <script type="text/javascript">                 var pos = 1;               function addFileComponent() {          var elTable = document.getElementById('uploadTable').getElementsByTagName('tbody')[0];          var elTr = document.getElementById('fileTr');          var elTr2 = document.getElementById('op');          var newEleTr = elTr.cloneNode(true);          newEleTr.id = "fileTr" + pos;             newEleTr.style.display = "";          inputs = newEleTr.getElementsByTagName('input');          inputs[0].id="file" + pos;          var elInput = inputs[1];          elInput.onclick=delFileComponent;          elInput.id="delbutton" + pos++;          elTable.insertBefore(newEleTr, elTr2);         }         function delFileComponent() {          var elTable = document.getElementById('uploadTable').getElementsByTagName('tbody')[0];          var trArr = elTable.getElementsByTagName("tr");          var el = event.srcElement;          for(j = 0; j < trArr.length; j++) {            tr = trArr[j];            if(tr.getElementsByTagName("input")[1] == el) {              elTable.removeChild(tr);              pos--;              break;            }          }        }                function isValidateFile(obj){          var extend = obj.value.substring(obj.value.lastIndexOf(".")+1);          if(extend==""){          }else{            if(!(extend=="xls"||extend=="doc")){             alert("請上傳后綴名為xls或doc的文件!");             var nf = obj.cloneNode(true);             nf.value='';             obj.parentNode.replaceChild(nf, obj);             return false;            }          }          return true;        }      </script>    </head>    <body>      <%@ include file="/common/message.jsp"%>      <div class="body-box">        <div class="rhead">          <div class="rpos">            文件上傳(可同時上傳多份文件)          </div>          <div class="clear"></div>        </div>        <s:form id="ops" action="csc_mUploadFile" theme="simple"         cssClass="rhead" enctype = "multipart/form-data">          <table id="uploadTable" width="100%" border="0">            <tr>              <td>                <input type="file" id="file0" name="uploadFile" size="50"                 onchange="isValidateFile(this);" />              </td>            </tr>            <tr id="fileTr" style="display: none;">              <td>                <input type="file" size="50" name="uploadFile"                 onchange="isValidateFile(this);" />                                 <input type="button" value="刪除" />              </td>            </tr>            <tr id="op">              <td>                <input type="submit" id="uploadbutton" value="上傳" />                                 <input type="button" value="添加" id="addbutton"                 onClick="addFileComponent();" />                               </td>            </tr>          </table>        </s:form>        <table class="pn-ltable" width="100%" cellspacing="1" cellpadding="0"         border="0">          <thead class="pn-lthead">            <tr>              <th>                序號              </th>              <th>                文件名              </th>              <th>                上傳時間              </th>            </tr>          </thead>          <tbody class="pn-ltbody">            <tr onmouseover="Pn.LTable.lineOver(this);"             onmouseout="Pn.LTable.lineOut(this);"             onclick="Pn.LTable.lineSelect(this);">              <td>              </td>              <td>              </td>              <td>              </td>            </tr>          </tbody>        </table>      </div>    </body>  </html> 

2、Action后臺處理上傳文件: 

 

//uploadFile對應頁面<input type="file" name="uploadFile"> private List<File> uploadFile;  //文件名對應uploadFile+“FileName”,要不獲取不到文件名 private List<String> uploadFileFileName;   // 文件上傳  public String mUploadFile() {    if (null == uploadFile) {    this.addActionError("請上傳文件!");    } else {    String fileName = "";     try {             //在自己代碼中控制文件上傳的服務器目錄      String directory = ServletActionContext.getServletContext().getRealPath("/uploads");             //判斷該目錄是否存在,不存在則創建            FileUtil.makeDir(directory);             //循環處理上傳的文件       for(int i=0,j=uploadFile.size();i<j;i++){          fileName = uploadFileFileName.get(i);          String filePath = directory + File.separator + fileName;          FileUtil.uploadFile(uploadFile.get(i), new File(filePath));        }      } catch (IOException e) {          this.addActionMessage("");      }        this.addActionMessage("文件上傳成功!");    }    return "fileUpload";  }

FileUtil代碼如下: 

public class FileUtil {  private static final int BUFFER_SIZE = 16 * 1024;  public static void uploadFile(File src, File dst) throws IOException {  InputStream in = null; OutputStream out = null; try {  in = new BufferedInputStream(new FileInputStream(src), BUFFER_SIZE);  out = new BufferedOutputStream(new FileOutputStream(dst),   BUFFER_SIZE);  byte[] buffer = new byte[BUFFER_SIZE];  while (in.read(buffer) > 0) {  out.write(buffer);  } } finally {  if (null != in) {  in.close();  }  if (null != out) {  out.close();  } }  }  public static String getExtention(String fileName) { int pos = fileName.lastIndexOf("."); return fileName.substring(pos); }  public static void makeDir(String directory) { File dir = new File(directory);  if (!dir.isDirectory()) {  dir.mkdirs(); }  }  public static String generateFileName(String fileName)  throws UnsupportedEncodingException { DateFormat format = new SimpleDateFormat("yyMMddHHmmss"); String formatDate = format.format(new Date()); String extension = fileName.substring(fileName.lastIndexOf(".")); fileName = new String(fileName.getBytes("iso8859-1"), "gb2312"); return fileName + "_" + formatDate + new Random().nextInt(10000)  + extension; } }

擴展: 

1.可以實現帶進度條的上傳與下載; 
2.可以用xml文件記錄上傳的文件清單,并且可以根據頁面對上傳文件的操作來修改相應的xml文件;

完畢!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 香蕉国产在线视频 | 无遮挡一级毛片视频 | 欧美性生活久久久 | 久久99深爱久久99精品 | 久草手机在线观看视频 | 国产精品野外av久久久 | 日韩在线播放第一页 | 成人三级电影网址 | 麻豆蜜桃在线观看 | 日本高清com| 久久成人视屏 | 海角在线观看91一区二区 | www.99热视频 | 国产成人在线播放视频 | 视频一区二区三区在线观看 | 一级做人爱c黑人影片 | 久久久久免费精品国产小说色大师 | 日韩字幕 | www视频免费观看 | 欧美视频在线一区二区三区 | 久久久久久久久久亚洲 | 久草成人在线观看 | 亚洲国产高清视频 | 羞羞色在线观看 | 欧美精品网址 | 欧美aⅴ视频| 牛牛a级毛片在线播放 | 欧美成人一区二区三区电影 | 日本a大片 | 欧美精品网址 | 鸳鸯谱在线观看高清 | 97久色| 操皮视频 | 日本s级毛片免费观看 | 中文字幕电影免费播放 | 亚洲日色 | 中文字幕免费一区 | 国产精品久久久久久久久久10秀 | 亚洲精品xxx | 91成人亚洲 | 羞羞答答视频 |