java進度條代碼

1.前臺


$.ajax({  
        type: 'GET',  
        cache:false,
        url: 'firmware/getProgress',  
        data: {},  
        dataType: 'json',  
        success : function(data){  
               $('#proBar').css('width',data.rate+''+'%');  
                $('#proBar').empty();  
                $('#proBar').append(data.show);   
        console.log(data.pBytesRead);
        console.log(data.pContentLength);
        console.log(data.status);
       
                $('#proBar').css('width',data.status+''+'%');  
                $('#proBar').empty();  
                $('#proBar').append(data.status+''+'%');  
       
                if(data.status == 100){  
                window.clearInterval(intId);  
                    $('#proBar').append(language['wait_yun']);  
                }     












2.
    /**
     * 獲取上傳文件進度條信息
     * 
     * @param request
     * @param response
     * @return 文件上傳的進度信息
     * @throws Exception
     */
    @RequestMapping(value = "/firmware/getProgress")
    @ResponseBody
    public Object process(HttpServletRequest request,
            HttpServletResponse response) throws Exception {
        return (ProgressEntity) request.getSession().getAttribute("status");
    }






3.




/*
 * Copyright © 2012-2015 Thunder Software Technology Co., Ltd.
 * All rights reserved.
 */


package com.thundersoft.fota.utils.uploadFile;


public class ProgressEntity {


private long pBytesRead = 0L;
private long pContentLength = 0L;
private int status = 0;
private int 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 int getpItems() {
return pItems;
}


public void setpItems(int pItems) {
this.pItems = pItems;
}


public int getStatus() {
return status;
}


public void setStatus(int status) {
this.status = status;
}


@Override
public String toString() {
return "ProgressEntity [pBytesRead=" + pBytesRead + ", pContentLength="
+ pContentLength + ", pItems=" + pItems + "]";
}
}




4. <!-- SpringMVC上傳文件時,需要配置MultipartResolver處理器 -->
<bean id="multipartResolver"
class="com.thundersoft.fota.utils.uploadFile.FileUploadCustomMultipartResolver">
<property name="defaultEncoding" value="UTF-8" />
<!-- 指定所上傳文件的總大小不能超過200KB。注意maxUploadSize屬性的限制不是針對單個文件,而是所有文件的容量之和 -->
<!-- <property name="maxUploadSize" value="200000"/> -->
</bean>






5.








/*
 * Copyright © 2012-2015 Thunder Software Technology Co., Ltd.
 * All rights reserved.
 */


package com.thundersoft.fota.utils.uploadFile;


import java.util.List;


import javax.servlet.http.HttpServletRequest;


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.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.multipart.MultipartException;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;


public class FileUploadCustomMultipartResolver extends CommonsMultipartResolver {


private FileUploadProgressListener progressListener = new FileUploadProgressListener();

@Override
public MultipartParsingResult parseRequest(HttpServletRequest request)
throws MultipartException {
System.out.println("test FileUploadCustomMultipartResolver");
String encoding = determineEncoding(request);
FileUpload fileUpload = prepareFileUpload(encoding);
progressListener.setSession(request.getSession());
fileUpload.setProgressListener(progressListener);
try {
@SuppressWarnings("unchecked")
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);
}
}
}






6.


/*
 * Copyright © 2012-2015 Thunder Software Technology Co., Ltd.
 * All rights reserved.
 */


package com.thundersoft.fota.utils.uploadFile;


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;
        ProgressEntity status = new ProgressEntity();
        session.setAttribute("status", status);
    }
 
    /*
     * pBytesRead 到目前爲止讀取文件的比特數 pContentLength 文件總大小 pItems 目前正在讀取第幾個文件
     */
    public void update(long pBytesRead, long pContentLength, int pItems) {
    ProgressEntity status = (ProgressEntity) session.getAttribute("status");
        status.setpBytesRead(pBytesRead);
//        System.out.println("pBytesRead="+pBytesRead);
        status.setpContentLength(pContentLength);
//        System.out.println("pContentLength="+pContentLength);
        status.setStatus((int) ((( pBytesRead + 0.0)/ pContentLength) * 100));
//        System.out.println("percent="+(int) ((( pBytesRead + 0.0)/ pContentLength) * 100));
        status.setpItems(pItems);
//        System.out.println("pItems="+pItems);
        //System.out.println("update status is : " + status);
    }
 


}

發佈了94 篇原創文章 · 獲贊 5 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章