FTP 上传下载 进度条
11
/// <summary>
/// 文件上传
/// </summary>
/// <param name="filePath">原路径(绝对路径)包括文件名</param>
/// <param name="objPath">目标文件夹:服务器下的相对路径 不填为根目录</param>
public static bool FileUpLoad(string filePath, string objPath = "")
{
bool isOk = false;
string url = path;
if (objPath != "")
url += objPath + "/";
FtpWebRequest reqFTP = null;
ProgressBarForm progressBarForm = null;
try
{
FileInfo fileInfo = new FileInfo(filePath);
reqFTP = getFtpWebRequest(url, fileInfo.Name);
progressBarForm = new ProgressBarForm();
progressBarForm.Show();
using (FileStream fs = fileInfo.OpenRead())
using (Stream stream = reqFTP.GetRequestStream())
{
int buff = * ;
byte[] b = new byte[buff];
int count = ;
double total = Math.Ceiling(fs.Length / (float)buff);
int len;
while ((len = fs.Read(b, , b.Length)) > )
{
stream.Write(b, , len);
progressBarForm.LoadProgressBarRate(count++, (float)total);
}
} isOk = true;
}
catch (Exception ex)
{
Logger.Error(ex);
}
finally
{
if (progressBarForm != null)
progressBarForm.Close();
}
return isOk;
} private static FtpWebRequest getFtpWebRequest(string url, string fileInfoName)
{
string requestUri = url + fileInfoName;
FtpWebRequest reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri(requestUri));
reqFTP.Credentials = new NetworkCredential(username, password); //设置连接到FTP的帐号密码
reqFTP.KeepAlive = false; //设置请求完成后是否保持连接
reqFTP.Method = WebRequestMethods.Ftp.UploadFile; //指定执行命令
reqFTP.UseBinary = true; //指定数据传输类型
return reqFTP;
} public void Download(string remoteFile, string localFile)
{
ProgressBarForm progressBarForm = null;
try
{
ftpRequest = (FtpWebRequest)FtpWebRequest.Create(path + "/" + remoteFile);
ftpRequest.Credentials = new NetworkCredential(username, password);
ftpRequest.UseBinary = true;
ftpRequest.UsePassive = true;
ftpRequest.KeepAlive = true;
ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;
ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
ftpStream = ftpResponse.GetResponseStream(); long serverFileSize = GetFileSize(remoteFile);
FileStream localFileStream = new FileStream(localFile, FileMode.Create);
byte[] byteBuffer = new byte[bufferSize];
progressBarForm = new ProgressBarForm();
progressBarForm.Show();
int len;
while ((len = ftpStream.Read(byteBuffer, , byteBuffer.Length)) > )
{
localFileStream.Write(byteBuffer, , len);
var current = (localFileStream.Length * 1.0d / serverFileSize) * ;
progressBarForm.LoadProgressBarRate((int)current, );
}
localFileStream.Close();
ftpStream.Close();
ftpResponse.Close();
ftpRequest = null;
}
catch (Exception ex)
{
Logger.Error(ex);
Console.WriteLine(ex.ToString());
}
finally
{
if (progressBarForm != null)
progressBarForm.Close();
}
}
FTP 上传下载 进度条的更多相关文章
- jq 上传下载进度条
里面只演示了下载的,挂载的是我的七牛服务器上的内容,上传事件和下载是一模一样的,为了大家不乱上传东西到我的服务器,而且我的服务器容量也不大,这里只展示了下载.代码: <!DOCTYPE html ...
- atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7
atitit.文件上传带进度条的实现原理and组件选型and最佳实践总结O7 1. 实现原理 1 2. 大的文件上传原理::使用applet 1 3. 新的bp 2 1. 性能提升---分割小文件上传 ...
- JAVA 实现FTP上传下载(sun.net.ftp.FtpClient)
package com.why.ftp; import java.io.DataInputStream; import java.io.File; import java.io.FileInputSt ...
- asp.net大文件上传与上传文件进度条问题
利用Plupload解决大容量文件上传问题, 带进度条和背景遮罩层 关于Plupload结合上传插件jquery.plupload.queue的使用 这是群里面一位朋友给的资料. 下面是自己搜索到的一 ...
- windows系统下ftp上传下载和一些常用命令
先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单, ...
- node实现http上传文件进度条 -我们到底能走多远系列(37)
我们到底能走多远系列(37) 扯淡: 又到了一年一度的跳槽季,相信你一定准备好了,每每跳槽,总有好多的路让你选,我们的未来也正是这一个个选择机会组合起来的结果,所以尽可能的找出自己想要的是什么再做决定 ...
- Ajax上传文件进度条显示
要实现进度条的显示,就要知道两个参数,上传的大小和总文件的大小 html5提供了一个上传过程事件,在上传过程中不断触发,然后用已上传的大 小/总大小,计算上传的百分比,然后用这个百分比控制div框的显 ...
- windows下ftp上传下载和一些常用命令
先假设一个ftp地址 用户名 密码 FTP Server: home4u.at.china.com User: yepanghuang Password: abc123 打开windows的开始菜单, ...
- FTP上传下载工具(FlashFXP) v5.5.0 中文版
软件名称: FTP上传下载工具(FlashFXP) 软件语言: 简体中文 授权方式: 免费试用 运行环境: Win 32位/64位 软件大小: 7.4MB 图片预览: 软件简介: FlashFXP 是 ...
随机推荐
- 一文懂SSM项目中的web.xml常用配置项
做web后端工程师,逃不过的web.xml,我们都知道配置这个文件是日常工作了,那么我们来把一些必须知道知识点梳理下. 我们把web项目启动的时候,首先加载的就是web.xml这个文件,只有这个文件所 ...
- windows系统下,gpu开发环境部署
1,安装python,使用anaconda或者直接用python.exe安装都可以.我用的是python3.6版的 对于相关的程序包,比如tensorflow或者opencv等,anaconda可以在 ...
- Unity2018破解版安装教程(windows)
最近啊,在研究一些游戏的搭建与算法的创新,所以学习使用unity,下面来跟大家分享Unity2018的安装过程. 1.下载安装包(我的下载地址:链接:https://pan.baidu.com/s/1 ...
- MNIST数据集环境搭建
由于换了电脑,ubuntu是重新下载的,因此记录一些相关数据集的搭建: 首先是data数据集,在第七讲中 我们需要建立data文件夹,并将数据集放进去 再就是model模型 我们应该新建一个model ...
- 用python实现网络文件共享
第一步:打开命令行 第二步:切换到要共享的文件夹目录 第三步:运行命令 python -m http.server 端口号 然后在浏览器输入显示的路径即可访问文件夹下的文件,点击即可下载,手机端亦可访 ...
- 箭头函数 this指向问题
1.为什么要用箭头函数 简洁 易用 固定this 指向(箭头函数在this定义时候生效) 2.箭头函数分析this指向 1.this指向调用函数的对象 情况1 var obj={ a:"1& ...
- 数据库备份与还原:mysqldump,source
*数据库备份* 1.备份方法一:适用于myslam表: 直接将tb_name.frm.tb_name.myd.tb_name.myi三个文件保存,备份即可. 需要的时候直接解压到,移动到相应的数据库目 ...
- zookeeper集群搭建记录
本文仅记录zookeeper集群搭建的过程,留待日后查看.使用. 一.硬件机器: 192.168.183.195 master-node 192.168.183.194 data-node1 192. ...
- matplotlib动态图subplots()和subplot()不同及参数
一.fig,ax = subplots(nrows,ncols,sharex,sharey,squeeze,subplot_kw,gridspec_kw,**fig_kw) 创建画布和子图 nrow ...
- Go 后端主要做什么
漫谈 Go 语言后端开发 :https://blog.csdn.net/u010986776/article/details/87276303 Golang 资深后端工程师要了解的知识:https:/ ...