实现FTP下载进度展示
来源:互联网 发布:python twisted adbapi 编辑:程序博客网 时间:2024/06/05 04:00
功能描述:FTP服务器上存有指定路径的文件夹,需要下载文件夹中的所有文件到本地,而且前台界面需要看到文件下载的进度和下载完成后需要通知界面。
问题难点:FTP提供查询某一个文件的大小的方法,但是不提供查询某一个文件夹大小的方法。(如有人知道如何查询文件夹大小的方法可以告知,谢谢!)
解决办法:下载进度不通过已下载/整个文件夹大小的方法展示,通过已下载文件数量/文件夹内整体文件数量的方法展示。
代码:
重新开线程,该线程用于下载FTP文件夹中的文件
Task.Factory.StartNew(() => { ftp.DownFtpDir("ftp://" + ftpip + "/" + caseresult.ModelGUID + "/" + caseresult.CaseName + "/" + caseresult.DRAW_TYPE + "_" + caseresult.DataType + "/" + username + "/", dir); });
FTP上下载文件夹中的文件
/// <summary> /// 从FTP下载整个文件夹 /// </summary> /// <param name="ftpDir">FTP文件夹路径</param> /// <param name="saveDir">保存的本地文件夹路径</param> public void DownFtpDir(string ftpDir, string saveDir) { bool start = true; while (start) { try { List<FileStruct> files = ListFilesAndDirectories(ftpDir); if (!Directory.Exists(saveDir)) { Directory.CreateDirectory(saveDir); } foreach (FileStruct f in files) { if (f.IsDirectory) //文件夹,递归查询 { DownFtpDir(ftpDir + "/" + f.Name, saveDir + "\\" + f.Name); } else //文件,直接下载 { DownLoadFile(ftpDir + "/" + f.Name, saveDir + "\\" + f.Name); } } start = false; } catch (Exception ex) { } } }
function getProcess(url, modelguid, casename, imagesArray) { $.ajax({ type: "GET", url: url, success: function (data) { if (data < 0.95) { //////////可能后台由于某个问题终止下载,data永远小于0.95,程序进入死循环,后期解决 alert(data); getProcess(url, modelguid, casename, imagesArray); } else { $.ajax({ type: "GET", url: 'WaterAnimateHandler.ashx?mode=GetImagesPath&DownLoaded=false&modelguid=' + modelguid + '&casename=' + casename + "&ParamName=" + results.options[cases.selectedIndex].value + "&dir=" + "", success: function (data) { ///////返回的数据 第一位:标识是否本地文件与服务器文件数量一致;第二位:本地文件地址;第三位。。最后图片名称 var imagesArray = new Array(); imagesArray = data.split('\n'); ImagesAnimate(imagesArray, casename, modelguid); } }); } } }); }
后台访问本地文件夹,获取本地文件内当前文件的数量,通过本地文件的数量/FTP服务器上的文件的数量获得当前下载的进度
public void GetDownLoadProcess(HttpContext context) { string path = context.Request.QueryString["dir"]; DirectoryInfo file = new DirectoryInfo(path); FileInfo[] filesCount = file.GetFiles(); double process = (double)filesCount.Count() / (double)imagescount; context.Response.Write(process.ToString()); }
阅读全文
0 0
- 实现FTP下载进度展示
- Android 实现应用下载并在通知栏展示进度通知 打开APK文件
- 实现有进度下载
- KVO实现自定义文件复制进度展示
- KVO实现自定义文件复制进度展示
- Notification实现下载进度显示!
- Notification实现下载进度显示!
- Notification实现下载进度显示!
- android 下载进度展示之 progressBar 简单版
- 实现FTP多线程下载
- 实现FTP多线程下载
- ftp下载实现
- vc实现ftp下载
- ftp下载实现
- ftp下载实现
- 简单实现FTP下载
- Qt实现FTP下载
- NSURLSession实现下载(不能看到下载进度)
- 使用echart从后台获取数据动态显示到页面
- Mysql执行sql脚本的方法
- 程序24
- FreeMarker基础语法
- 线性表——顺序表——时间复杂度计算
- 实现FTP下载进度展示
- Android:Intent传递数据的几种类型和源码实现
- java调试远程服务器上bug问题
- 程序25
- Android将res路径下图缓存到sd卡
- 财务助手之Excel合并工具
- OkhttpUtils
- 实战检测北大青鸟某地方学校网站
- Python调用C/C++(使用SWIG)