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

springMVC實現(xiàn)前臺帶進度條文件上傳的示例代碼

 更新時間:2017年01月13日 10:36:44   作者:零度anngle  
本篇文章主要介紹了springMVC實現(xiàn)前臺帶進度條文件上傳的示例代碼,具有一定的參考價值,有興趣的可以了解一下。

項目框架采用spring+hibernate+springMVC如果上傳文件不想使用flash那么你可以采用HTML5;截圖前段模塊是bootstarp框架;不廢話直接來代碼;spring-mvc配置文件;效果截圖如下:

詳細實現(xiàn)如下:

1、mvc-config.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"      
    xmlns:context="http://www.springframework.org/schema/context" 
  xmlns:mvc="http://www.springframework.org/schema/mvc" 
  xsi:schemaLocation="http://www.springframework.org/schema/beans  
  http://www.springframework.org/schema/beans/spring-beans.xsd 
  http://www.springframework.org/schema/context 
  http://www.springframework.org/schema/context/spring-context-3.2.xsd 
  http://www.springframework.org/schema/mvc 
  http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> 
 
  <!-- 注解掃描包 --> 
  <context:component-scan base-package="com.yunfang.banks.controllers" /> 
 
  <!-- 開啟注解 --> 
  <mvc:annotation-driven /> 
  <!-- 不攔截靜態(tài)資源 --> 
  <mvc:default-servlet-handler /> 
  <mvc:interceptors> 
    <mvc:interceptor> 
      <mvc:mapping path="/js/" /> 
      <mvc:mapping path="/js/**" /> 
      <bean class="com.yunfang.banks.intreceptor.MyInterceptor"></bean> 
    </mvc:interceptor> 
  </mvc:interceptors> 
  <mvc:interceptors> 
    <bean class="com.yunfang.banks.intreceptor.MyInterceptor"></bean> 
  </mvc:interceptors> 
  <!-- 靜態(tài)資源(js/image)的訪問 --> 
  <mvc:resources location="/js/" mapping="/js/**" /> 
 
  <!-- 定義視圖解析器 --> 
  <bean id="viewResolver" 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/"></property> 
    <property name="suffix" value=""></property> 
  </bean> 
 
  <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 
    <property name="messageConverters"> 
      <list> 
        <!--下載的時候?qū)S?--> 
        <bean 
          class="org.springframework.http.converter.ByteArrayHttpMessageConverter" /> 
        <bean id="jsonHttpMessageConverter" 
          class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 
          <property name="supportedMediaTypes"> 
            <list> 
              <value>text/plain;charset=UTF-8</value> 
            </list> 
          </property> 
        </bean> 
      </list> 
    </property> 
  </bean> 
  <!-- 配置springMVC處理上傳文件的信息,自定義上傳,帶進度條 --> 
  <bean id="multipartResolver" class="com.yunfang.banks.listener.CustomMultipartResolver"> 
      <property name="defaultEncoding" value="utf-8" /> 
    <property name="maxUploadSize" value="10000000000" /> 
  </bean> 
    <!--    
    <bean id="multipartResolver" 
    class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> 
    <property name="defaultEncoding" value="utf-8" /> 
    <property name="maxUploadSize" value="10485760000" /> 
    <property name="maxInMemorySize" value="40960" /> 
  </bean>  
    --> 
   
</beans> 

2、實體工具類:Progress.Java

package com.yunfang.banks.listener; 
 
public class Progress { 
   
  private long pBytesRead; 
  private long pContentLength; 
  private long pItems; 
  public long getpBytesRead() { 
    return pBytesRead; 
  } 
  public void setpBytesRead(long pBytesRead) { 
    this.pBytesRead = pBytesRead; 
  } 
  public long getpContentLength() { 
    return pContentLength; 
  } 
  public void setpContentLength(long pContentLength) { 
    this.pContentLength = pContentLength; 
  } 
  public long getpItems() { 
    return pItems; 
  } 
  public void setpItems(long pItems) { 
    this.pItems = pItems; 
  } 
  @Override 
  public String toString() { 
    return "Progress [pBytesRead=" + pBytesRead + ", pContentLength=" 
        + pContentLength + ", pItems=" + pItems + "]"; 
  } 
   
   
   
} 

3、文件上傳進度監(jiān)聽類:FileUploadProgressListener.java

package com.yunfang.banks.listener; 
 
import javax.servlet.http.HttpSession; 
import org.apache.commons.fileupload.ProgressListener; 
import org.springframework.stereotype.Component; 
 
@Component 
public class FileUploadProgressListener implements ProgressListener { 
  private HttpSession session; 
  public void setSession(HttpSession session){ 
    this.session=session; 
    Progress status = new Progress();//保存上傳狀態(tài) 
    session.setAttribute("status", status); 
  } 
  public void update(long pBytesRead, long pContentLength, int pItems) { 
    Progress status = (Progress) session.getAttribute("status"); 
    try { 
      Thread.sleep(5); 
    } catch (InterruptedException e) { 
      e.printStackTrace(); 
    } 
    status.setpBytesRead(pBytesRead); 
    status.setpContentLength(pContentLength); 
    status.setpItems(pItems); 
    //System.out.println(">>>>>>>>>>>>>>>>>>>>"+status); 
     
  } 
 
} 

4、自定義擴展org.springframework.web.multipart.commons.CommonsMultipartResolver類,重寫public MultipartParsingResult parseRequest(HttpServletRequest request) throws MultipartException方法:

CustomMultipartResolver.java

package com.yunfang.banks.listener; 
 
import java.util.List; 
 
import javax.servlet.http.HttpServletRequest; 
import org.apache.commons.fileupload.servlet.ServletFileUpload; 
import org.apache.commons.fileupload.FileItem; 
import org.apache.commons.fileupload.FileUpload; 
import org.apache.commons.fileupload.FileUploadBase; 
import org.apache.commons.fileupload.FileUploadException; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.web.multipart.MaxUploadSizeExceededException; 
import org.springframework.web.multipart.MultipartException; 
import org.springframework.web.multipart.commons.CommonsMultipartResolver; 
 
public class CustomMultipartResolver extends CommonsMultipartResolver { 
  @Autowired 
  private FileUploadProgressListener progressListener; 
 
  public void setFileUploadProgressListener( 
      FileUploadProgressListener progressListener) { 
    this.progressListener = progressListener; 
  } 
   
  @Override 
  @SuppressWarnings("unchecked") 
  public MultipartParsingResult parseRequest(HttpServletRequest request) 
      throws MultipartException { 
    String encoding = determineEncoding(request); 
    FileUpload fileUpload = prepareFileUpload(encoding); 
    progressListener.setSession(request.getSession()); 
    fileUpload.setProgressListener(progressListener); 
    try { 
      List<FileItem> fileItems = ((ServletFileUpload) fileUpload).parseRequest(request); 
      return parseFileItems(fileItems, encoding); 
    } 
    catch (FileUploadBase.SizeLimitExceededException ex) { 
      throw new MaxUploadSizeExceededException(fileUpload.getSizeMax(), ex); 
    } 
    catch (FileUploadException ex) { 
      throw new MultipartException("Could not parse multipart servlet request", ex); 
    } 
  } 
   
} 

5、uploadController.java

@RequestMapping("UserControllers/progress") 
public void uploadFile(HttpServletRequest request,HttpServletResponse response, 
            @RequestParam("file") CommonsMultipartFile file) throws IOException { 
   response.setContentType("text/html"); 
   response.setCharacterEncoding("GBK"); 
   PrintWriter out; 
   boolean flag = false; 
   if (file.getSize() > 0) { 
     //文件上傳的位置可以自定義 
     flag = FileUploadUtil.upLoadFile(file, request); 
   } 
   out = response.getWriter(); 
   if (flag == true) { 
    out.print("1"); 
   } else { 
    out.print("2"); 
   } 
} 

6、FileUploadUtil.java

import java.io.File; 
 
import javax.servlet.http.HttpServletRequest; 
 
import org.springframework.web.multipart.MultipartFile; 
 
public class FileUploadUtil { 
   
  public static Boolean uploadFile(HttpServletRequest request, MultipartFile file) { 
     System.out.println("開始"); 
     String path = request.getSession().getServletContext().getRealPath("upload"); 
     String fileName = file.getOriginalFilename(); 
     System.out.println(path); 
     File targetFile = new File(path, fileName); 
     if (!targetFile.exists()) { 
       targetFile.mkdirs(); 
     } 
     // 保存 
     try { 
       file.transferTo(targetFile); 
       return true; 
     } catch (Exception e) { 
       e.printStackTrace(); 
       return false; 
     } 
 
  } 
 
} 

7、前臺頁面

<%@ page language="java" import="java.util.*" pageEncoding="Utf-8"%> 
<% 
  String path = request.getContextPath(); 
  String basePath = request.getScheme() + "://" 
      + request.getServerName() + ":" + request.getServerPort() 
      + path + "/"; 
%> 
 
<!DOCTYPE html> 
<html> 
<head> 
<base href="<%=basePath%>"> 
 
 
<meta http-equiv="pragma" content="no-cache"> 
<meta http-equiv="cache-control" content="no-cache"> 
<meta http-equiv="expires" content="0"> 
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
<meta http-equiv="description" content="This is my page"> 
<!-- 
 <link rel="stylesheet" type="text/css" href="styles.css"> 
--> 
<link href="css/bootstrap.min.css" rel="stylesheet"> 
 
<style type="text/css"> 
.file-box { 
  position: relative; 
  width: 340px 
} 
 
.txt { 
  height: 22px; 
  border: 1px solid #cdcdcd; 
  width: 180px; 
  vertical-align: middle; 
  margin: 0; 
  padding: 0 
} 
 
.btn { 
  border: 1px solid #CDCDCD; 
  height: 24px; 
  width: 70px; 
  vertical-align: middle; 
  margin: 0; 
  padding: 0 
} 
 
.file { 
  position: absolute; 
  top: 0; 
  right: 80px; 
  height: 24px; 
  filter: alpha(opacity :  0); 
  opacity: 0; 
  width: 260px; 
  vertical-align: middle; 
  margin: 0; 
  padding: 0 
} 
</style> 
<%--<script type="text/javascript"> 
    function myInterval() 
    { 
      $("#progress").html(""); 
      $.ajax({ 
        type: "POST", 
        url: "<%=basePath%>UserControllers/getSessions", 
      data : "1=1", 
      dataType : "text", 
      success : function(msg) { 
        var data = msg; 
        console.log(data); 
        $("#pdiv").css("width", data + "%"); 
        $("#progress").html(data + "%"); 
      } 
    }); 
  } 
  function autTime() { 
    setInterval("myInterval()", 200);//1000為1秒鐘 
  } 
</script> 
 
 
--%> 
<script type="text/javascript"> 
  function UpladFile() { 
    var fileObj = document.getElementById("file").files[0]; // js 獲取文件對象 
    var FileController = "UserControllers/progress"; // 接收上傳文件的后臺地址  
    // FormData 對象---進行無刷新上傳 
    var form = new FormData(); 
    form.append("author", "hooyes"); // 可以增加表單數(shù)據(jù) 
    form.append("file", fileObj); // 文件對象 
    // XMLHttpRequest 對象 
    var xhr = new XMLHttpRequest(); 
    xhr.open("post", FileController, true); 
    xhr.onload = function() { 
      alert("上傳完成!"); 
      //$('#myModal').modal('hide'); 
    }; 
        //監(jiān)聽progress事件 
    xhr.upload.addEventListener("progress", progressFunction, false); 
    xhr.send(form); 
  } 
  function progressFunction(evt) { 
 
    var progressBar = document.getElementById("progressBar"); 
 
    var percentageDiv = document.getElementById("percentage"); 
 
    if (evt.lengthComputable) { 
 
      progressBar.max = evt.total; 
 
      progressBar.value = evt.loaded; 
 
      percentageDiv.innerHTML = Math.round(evt.loaded / evt.total * 100) 
          + "%"; 
 
    } 
 
  } 
</script> 
 
</head> 
 
<body style="width: 80%;height: 80%;margin: 0px auto;"> 
  <div class="row bootstrap-admin-no-edges-padding"> 
    <div class="col-md-12"> 
      <div class="panel panel-default"> 
        <div class="panel-heading"> 
          <div class="text-muted bootstrap-admin-box-title">文件管理</div> 
        </div> 
        <div class="bootstrap-admin-panel-content"> 
          <button class="btn btn-primary btn-lg" data-toggle="modal" 
            data-target="#myModal">上傳</button> 
          <input type="text" id="test"> 
        </div> 
      </div> 
    </div> 
  </div> 
 
  <!-- 模態(tài)框(Modal) --> 
  <div class="modal fade" id="myModal" tabindex="-1" role="dialog" 
    aria-labelledby="myModalLabel" aria-hidden="true"> 
    <div class="modal-dialog"> 
      <div class="modal-content"> 
        <div class="modal-header"> 
          <button type="button" class="close" data-dismiss="modal" 
            aria-hidden="true">×</button> 
          <h4 class="modal-title" id="myModalLabel">文件上傳進度</h4> 
        </div> 
        <div class="modal-body"> 
          <progress id="progressBar" value="0" max="100" 
            style="width: 100%;height: 20px; "> </progress> 
          <span id="percentage" style="color:blue;"></span> <br> 
          <br> 
          <div class="file-box"> 
            <input type='text' name='textfield' id='textfield' class='txt' /> 
            <input type='button' class='btn' value='瀏覽...' /> <input 
              type="file" name="file" class="file" id="file" size="28" 
              onchange="document.getElementById('textfield').value=this.value" /> 
            <input type="submit" name="submit" class="btn" value="上傳" 
              onclick="UpladFile()" /> 
             
          </div> 
        </div> 
        <div class="modal-footer"> 
          <button type="button" class="btn btn-default" data-dismiss="modal">關(guān)閉 
          </button> 
        </div> 
      </div> 
      <!-- /.modal-content --> 
    </div> 
    <!-- /.modal --> 
  </div> 
  <script type="text/javascript" 
    src="http://code.jquery.com/jquery-2.0.3.min.js"></script> 
  <script src="js/bootstrap.min.js"></script> 
</body> 
</html> 

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中List.contains(Object?object)方法使用

    Java中List.contains(Object?object)方法使用

    本文主要介紹了Java中List.contains(Object?object)方法,使用List.contains(Object?object)方法判斷ArrayList是否包含一個元素對象,感興趣的可以了解一下
    2022-04-04
  • Spring核心容器之BeanDefinition解析

    Spring核心容器之BeanDefinition解析

    這篇文章主要介紹了Spring核心容器之BeanDefinition解析,Spring 將管理的對象稱之為 Bean,容器會先實例化 Bean,然后自動注入,實例化的過程就需要依賴 BeanDefinition,需要的朋友可以參考下
    2023-11-11
  • java如何讀取resources目錄和同級目錄文件

    java如何讀取resources目錄和同級目錄文件

    介紹了Java中讀取resources目錄和同級目錄文件的方法,并討論了在IDE和發(fā)布環(huán)境中可能遇到的問題,通過測試發(fā)現(xiàn),執(zhí)行目錄可能會影響文件讀取,建議在使用`user.dir`時注意jar包的運行目錄問題
    2024-12-12
  • spring cloud gateway整合sentinel實現(xiàn)網(wǎng)關(guān)限流

    spring cloud gateway整合sentinel實現(xiàn)網(wǎng)關(guān)限流

    這篇文章主要介紹了spring cloud gateway整合sentinel實現(xiàn)網(wǎng)關(guān)限流,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-01-01
  • SpringBoot設(shè)置Json返回字段為非空問題

    SpringBoot設(shè)置Json返回字段為非空問題

    這篇文章主要介紹了SpringBoot設(shè)置Json返回字段為非空問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • JavaWeb中的filter過濾敏感詞匯案例詳解

    JavaWeb中的filter過濾敏感詞匯案例詳解

    敏感詞、文字過濾是一個網(wǎng)站必不可少的功能,本篇文章主要介紹了JavaWeb中的filter過濾敏感詞匯案例,具有一定的參考價值,有需要的可以了解一下,
    2016-11-11
  • JAVA十大排序算法之快速排序詳解

    JAVA十大排序算法之快速排序詳解

    這篇文章主要介紹了java中的快速排序,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • 詳解Java序列化如何破壞單例模式

    詳解Java序列化如何破壞單例模式

    這篇文章主要為大家詳細介紹了Java序列化是如何破壞單例模式的,文中的示例代碼講解詳細,具有一定的借鑒價值,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-12-12
  • 詳談Array和ArrayList的區(qū)別與聯(lián)系

    詳談Array和ArrayList的區(qū)別與聯(lián)系

    下面小編就為大家?guī)硪黄斦凙rray和ArrayList的區(qū)別與聯(lián)系。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 詳解Spring配置及事務(wù)的使用

    詳解Spring配置及事務(wù)的使用

    這篇文章主要介紹了詳解Spring配置及事務(wù)的使用,文中附含詳細的示例代碼說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09

最新評論

华宁县| 乌拉特前旗| 伊春市| 方城县| 北京市| 新余市| 津市市| 革吉县| 怀来县| 剑阁县| 沽源县| 东乡族自治县| 安远县| 甘谷县| 台安县| 西丰县| 乐平市| 平乐县| 株洲县| 吉林省| 杨浦区| 拜城县| 大港区| 贵德县| 秀山| 广宗县| 宝应县| 阿克陶县| 邵东县| 河津市| 栖霞市| 平顶山市| 高唐县| 偃师市| 图木舒克市| 渝北区| 湛江市| 富锦市| 田林县| 宜昌市| 西宁市|