最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

AjaxFileUpload+Struts2實(shí)現(xiàn)多文件上傳功能

 更新時(shí)間:2017年09月25日 10:53:15   作者:麥田  
這篇文章主要介紹了AjaxFileUpload+Struts2實(shí)現(xiàn)多文件上傳功能,需要的朋友可以參考下

本文重點(diǎn)給大家介紹AjaxFileUpload+Struts2實(shí)現(xiàn)多文件上傳功能,具體實(shí)現(xiàn)代碼大家參考下本文。

單文件和多文件的實(shí)現(xiàn)區(qū)別主要修改兩點(diǎn),

一是插件ajaxfileupload.js里接收file文件ID的方式

二是后臺(tái)action是數(shù)組形式接收

1、ajaxFileUpload文件下載地址http://www.phpletter.com/Demo/AjaxFileUpload-Demo/

2、引入jquery-1.8.0.min.js、ajaxFileUpload.js文件

3、文件上傳頁面核心代碼

<body> 
  <form action="" enctype="multipart/form-data"> 
    <h2> 
      多文件上傳 
    </h2> 
    <input type="file" id="file1" name="file" /> 
    </br> 
    <input type="file" id="file2" name="file" /> 
    </br> 
    <input type="file" id="file3" name="file" /> 
    </br> 
    <span> 
      <table id="down"> 
      </table> 
    </span> 
    </br> 
    <input type="button" onclick="fileUpload();" value="上傳"> 
  </form> 
</body> 
<script type="text/javascript"> 
  function fileUpload() { 
    var files = ['file1','file2','file3']; //將上傳三個(gè)文件 ID 分別為file2,file2,file3 
    $.ajaxFileUpload( { 
      url : 'fileUploadAction',   //用于文件上傳的服務(wù)器端請(qǐng)求地址  
      secureuri : false,      //一般設(shè)置為false  
      fileElementId : files,    //文件上傳的id屬性 <input type="file" id="file" name="file" />  
      dataType : 'json',      //返回值類型 一般設(shè)置為json  
      success : function(data, status) { 
        var fileNames = data.fileFileName; //返回的文件名  
        var filePaths = data.filePath;   //返回的文件地址  
        for(var i=0;i<data.fileFileName.length;i++){ 
          //將上傳后的文件 添加到頁面中 以進(jìn)行下載 
          $("#down").after("<tr><td height='25'>"+fileNames[i]+ 
              "</td><td><a href='downloadFile?downloadFilePath="+filePaths[i]+"'>下載</a></td></tr>") 
        } 
      } 
    }) 
  } 
</script> 

以上fileElementId屬性接收的files參數(shù)為['file1','file2','file3']

由于是多文件,所以我們需要修改ajaxfileupload.js 找到以下代碼

var oldElement = jQuery('#' + fileElementId); 
var newElement = jQuery(oldElement).clone(); 
jQuery(oldElement).attr('id', fileId); 
jQuery(oldElement).before(newElement); 
jQuery(oldElement).appendTo(form); 

修改為:

for(var i in fileElementId){  
  var oldElement = jQuery('#' + fileElementId[i]);  
  var newElement = jQuery(oldElement).clone();  
  jQuery(oldElement).attr('id', fileId);  
  jQuery(oldElement).before(newElement);  
  jQuery(oldElement).appendTo(form);  
}  

4、文件上傳Action

public class FileAction { 
  private File[] file;       //文件  
  private String[] fileFileName;  //文件名   
  private String[] filePath;    //文件路徑 
  private String downloadFilePath; //文件下載路徑 
  private InputStream inputStream;  
  /** 
   * 文件上傳 
   * @return 
   */ 
  public String fileUpload() { 
    String path = ServletActionContext.getServletContext().getRealPath("/upload"); 
    File file = new File(path); // 判斷文件夾是否存在,如果不存在則創(chuàng)建文件夾 
    if (!file.exists()) { 
      file.mkdir(); 
    } 
    try { 
      if (this.file != null) { 
        File f[] = this.getFile(); 
        filePath = new String[f.length]; 
        for (int i = 0; i < f.length; i++) { 
          String fileName = java.util.UUID.randomUUID().toString(); // 采用時(shí)間+UUID的方式隨即命名 
          String name = fileName + fileFileName[i].substring(fileFileName[i].lastIndexOf(".")); //保存在硬盤中的文件名 
          FileInputStream inputStream = new FileInputStream(f[i]); 
          FileOutputStream outputStream = new FileOutputStream(path+ "\\" + name); 
          byte[] buf = new byte[1024]; 
          int length = 0; 
          while ((length = inputStream.read(buf)) != -1) { 
            outputStream.write(buf, 0, length); 
          } 
          inputStream.close(); 
          outputStream.flush(); 
          //文件保存的完整路徑 
          // 如:D:\tomcat6\webapps\struts_ajaxfileupload\\upload\a0be14a1-f99e-4239-b54c-b37c3083134a.png 
          filePath[i] = path + "\\" + name; 
        } 
      } 
    } catch (Exception e) { 
      e.printStackTrace(); 
    } 
    return "success"; 
  } 
  /** 
   * 文件下載 
   * @return 
   */ 
  public String downloadFile() { 
    String path = downloadFilePath; 
    HttpServletResponse response = ServletActionContext.getResponse(); 
    try { 
      // path是指欲下載的文件的路徑。 
      File file = new File(path); 
      // 取得文件名。 
      String filename = file.getName(); 
      // 以流的形式下載文件。 
      InputStream fis = new BufferedInputStream(new FileInputStream(path)); 
      byte[] buffer = new byte[fis.available()]; 
      fis.read(buffer); 
      fis.close(); 
      // 清空response 
      response.reset(); 
      // 設(shè)置response的Header 
      String filenameString = new String(filename.getBytes("gbk"),"iso-8859-1"); 
      response.addHeader("Content-Disposition", "attachment;filename="+ filenameString); 
      response.addHeader("Content-Length", "" + file.length()); 
      OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); 
      response.setContentType("application/octet-stream"); 
      toClient.write(buffer); 
      toClient.flush(); 
      toClient.close(); 
    } catch (IOException ex) { 
      ex.printStackTrace(); 
    } 
    return null; 
  } 
  /** 
   * 省略set get方法 
   */ 
} 

5、struts配置

<!DOCTYPE struts PUBLIC  
  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
  "http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 
  <package name="ajax_code" extends="json-default"> 
    <!-- 文件上傳 --> 
    <action name="fileUploadAction" class="com.itmyhome.FileAction" method="fileUpload"> 
      <result type="json" name="success"> 
        <param name="contentType">text/html</param> 
      </result> 
    </action> 
  </package> 
  <package name="jsp_code" extends="struts-default"> 
    <!-- 文件下載 -->    
    <action name="downloadFile" class="com.itmyhome.FileAction" method="downloadFile">   
      <result type="stream">   
         <param name="contentType">application/octet-stream</param>   
         <param name="inputName">inputStream</param>   
         <param name="contentDisposition">attachment;filename=${fileName}</param>   
         <param name="bufferSize">4096</param>   
      </result>   
    </action>  
  </package> 
</struts> 

瀏覽器中輸入:http://localhost:8080/struts_ajaxfileupload/index.jsp  即可進(jìn)行文件上傳

如圖:

項(xiàng)目源碼下載:http://demo.jb51.net/js/2017/struts_ajaxfileupload.rar

總結(jié)

以上所述是小編給大家介紹的AjaxFileUpload+Struts2實(shí)現(xiàn)多文件上傳功能,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Ajax 設(shè)置Access-Control-Allow-Origin實(shí)現(xiàn)跨域訪問

    Ajax 設(shè)置Access-Control-Allow-Origin實(shí)現(xiàn)跨域訪問

    這篇文章主要介紹了Ajax 設(shè)置Access-Control-Allow-Origin實(shí)現(xiàn)跨域訪問,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • 用Ajax來控制書簽和回退按鈕的代碼

    用Ajax來控制書簽和回退按鈕的代碼

    用Ajax來控制書簽和回退按鈕的代碼
    2007-01-01
  • Boa服務(wù)器下的ajax與cgi通信

    Boa服務(wù)器下的ajax與cgi通信

    最近小編在研究嵌入式開發(fā)的課程設(shè)計(jì),接下來通過本篇文章給介紹了Boa服務(wù)器下的ajax與cgi通信的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,感興趣的朋友一起看下吧
    2016-07-07
  • Ajax返回?cái)?shù)據(jù)之前的loading等待效果

    Ajax返回?cái)?shù)據(jù)之前的loading等待效果

    我們通過ajax請(qǐng)求,向后臺(tái)傳遞參數(shù),然后后臺(tái)經(jīng)過一系列的運(yùn)算之后向前臺(tái)返還數(shù)據(jù),我希望在等待數(shù)據(jù)成功返還之前可以展示一個(gè)loading.gif圖。接下來通過本文給大家分享Ajax返回?cái)?shù)據(jù)之前的loading等待效果,需要的朋友可以參考下
    2017-08-08
  • Ajax二級(jí)聯(lián)動(dòng)菜單實(shí)現(xiàn)原理及代碼

    Ajax二級(jí)聯(lián)動(dòng)菜單實(shí)現(xiàn)原理及代碼

    二級(jí)聯(lián)動(dòng)菜單,一個(gè)多么方便且實(shí)用的用戶交互功能,有需求的朋友可以參考下本文,或許對(duì)你的菜單知識(shí)深入學(xué)習(xí)有幫助,好了,閑話不多說,看代碼吧
    2013-01-01
  • AJAX 簡介及入門實(shí)例

    AJAX 簡介及入門實(shí)例

    最近在學(xué)校參加暑期實(shí)習(xí),參與的是一個(gè)社交網(wǎng)站項(xiàng)目,學(xué)長那邊分配給的任務(wù)是前端開發(fā),需要學(xué)習(xí)AJAX技術(shù)。
    2009-07-07
  • Ajax基礎(chǔ)詳解教程(一)

    Ajax基礎(chǔ)詳解教程(一)

    ajax技術(shù)在前端應(yīng)用開發(fā)中經(jīng)常會(huì)用到,是必須要掌握的知識(shí)。下面腳本之家小編給大家?guī)砹薃jax基礎(chǔ)詳解教程(一),感興趣的朋友跟著一起學(xué)習(xí)吧
    2016-06-06
  • ajax實(shí)現(xiàn)頁面的局部加載

    ajax實(shí)現(xiàn)頁面的局部加載

    這篇文章主要為大家詳細(xì)介紹了ajax實(shí)現(xiàn)頁面的局部加載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 圖文解析AJAX的原理

    圖文解析AJAX的原理

    Ajax的工作原理相當(dāng)于在用戶和服務(wù)器之間加了—個(gè)中間層(AJAX引擎),使用戶操作與服務(wù)器響應(yīng)異步化。網(wǎng)上關(guān)于介紹ajax的原理有很多,本文將通過圖文的形式給大家更直接明了的介紹,有需要的可以參考學(xué)習(xí)。
    2016-08-08
  • 基于CORS實(shí)現(xiàn)WebApi Ajax 跨域請(qǐng)求解決方法

    基于CORS實(shí)現(xiàn)WebApi Ajax 跨域請(qǐng)求解決方法

    這篇文章主要介紹了基于CORS實(shí)現(xiàn)WebApi Ajax 跨域請(qǐng)求解決方法,需要的朋友可以參考下
    2017-08-08

最新評(píng)論

安平县| 灌南县| 宜兴市| 大同县| 永仁县| 当阳市| 隆尧县| 双流县| 泸水县| 西乌| 大荔县| 六安市| 县级市| 琼中| 南投市| 栾城县| 兖州市| 古丈县| 临武县| 桑日县| 兰州市| 洛川县| 奇台县| 富川| 苗栗市| 清原| 彝良县| 海口市| 沾化县| 永泰县| 高平市| 科技| 大竹县| 新郑市| 扬中市| 延寿县| 麻阳| 丹巴县| 扬州市| 潼关县| 清流县|