Java使用comms-net jar包完成ftp文件上传进度的检测功能
本文章只講述大致的思路與本次功能對(duì)應(yīng)的一些開(kāi)發(fā)環(huán)境,具體實(shí)現(xiàn)請(qǐng)結(jié)合自己的開(kāi)發(fā)情況,僅供參考,如果有不對(duì)的地方,歡迎大家指出!
準(zhǔn)備環(huán)境:JDK1.7 OR 1.8、eclipse、ftp服務(wù)器(可自行搭建)、comms-net jar包3.3版本的。其余的就不詳細(xì)列舉了。
1.在現(xiàn)實(shí)開(kāi)發(fā)中ftp服務(wù)器和項(xiàng)目的部署服務(wù)器基本不會(huì)是同一臺(tái),所以基礎(chǔ)springmvc的文件上傳進(jìn)度獲取,只能獲取到文件的二進(jìn)制流到達(dá)項(xiàng)目后臺(tái)的進(jìn)度。對(duì)于真實(shí)的ftp文件上傳進(jìn)度,需要使用comms-net提供的監(jiān)聽(tīng)器來(lái)實(shí)現(xiàn)。
2.在ftp代碼上傳前設(shè)置監(jiān)聽(tīng)器。完成文件上傳的進(jìn)度監(jiān)聽(tīng),我這邊是把進(jìn)度保存在session中,前端定時(shí)獲取。上傳完成后,把session中的對(duì)應(yīng)值清空。附上核心代碼:
/**
* 獲取文件上傳進(jìn)度
* @param totalBytes 文件總大小
*/
public void uploadProgress(long totalBytes){
CopyStreamAdapter streamListener = new CopyStreamAdapter() {
/**
* @param totalBytesTransferred已經(jīng)上傳的字節(jié)數(shù)
*/
@Override
public void bytesTransferred(long totalBytesTransferred, int bytesTransferred, long streamSize) {
/** 通過(guò)計(jì)算已經(jīng)上傳大小和總大小的百分比獲取上傳進(jìn)度。 */
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);
}
總結(jié)
以上是生活随笔為你收集整理的Java使用comms-net jar包完成ftp文件上传进度的检测功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 惠普打印机M180N,不小心点了 升级(
- 下一篇: 解决Mac笔记本电脑自带录屏软件没有声音