1. 程式人生 > >Java使用comms-net jar包完成ftp文件上傳進度的檢測功能

Java使用comms-net jar包完成ftp文件上傳進度的檢測功能

.get 核心 util logs 後臺 pan 設置 ftp文件 ets

本文章只講述大致的思路與本次功能對應的一些開發環境,具體實現請結合自己的開發情況,僅供參考,如果有不對的地方,歡迎大家指出!

準備環境:JDK1.7 OR 1.8、eclipse、ftp服務器(可自行搭建)、comms-net jar包3.3版本的。其余的就不詳細列舉了。

1.在現實開發中ftp服務器和項目的部署服務器基本不會是同一臺,所以基礎springmvc的文件上傳進度獲取,只能獲取到文件的二進制流到達項目後臺的進度。對於真實的ftp文件上傳進度,需要使用comms-net提供的監聽器來實現。

2.在ftp代碼上傳前設置監聽器。完成文件上傳的進度監聽,我這邊是把進度保存在session中,前端定時獲取。上傳完成後,把session中的對應值清空。附上核心代碼:

/**
     * 獲取文件上傳進度
     * @param totalBytes 文件總大小
     */
    public void uploadProgress(long totalBytes){
        CopyStreamAdapter streamListener = new CopyStreamAdapter() {

            /**
             * @param totalBytesTransferred已經上傳的字節數
             */
            @Override
            public
void bytesTransferred(long totalBytesTransferred, int bytesTransferred, long streamSize) { /** 通過計算已經上傳大小和總大小的百分比獲取上傳進度。 */ String percent = CalculationUtil.percentCal((int)totalBytesTransferred, (int)totalBytes, 3); if(percent.contains(".")){ percent
= percent.substring(0, percent.lastIndexOf(".")); } HttpSession session = request.getSession(); session.setAttribute(session.getId(), percent); } }; this.client.setCopyStreamListener(streamListener); }

Java使用comms-net jar包完成ftp文件上傳進度的檢測功能