winform用http上传文件或下载文件进度条如何实现
2个回答
展开全部
winform用http上传?不知道你具体是什么意思
1.如果对端是winform服务端的话,建立socket连接发送字节流,用进度条控件实时获取进度信息,可以发送一个自己就显示一个比例
2.如果对端是webservice的话那就按照调用一次方法刷新一次进度,但是这里有问题,webservice作为对端接收的话不能一次处理大量数据,会导致页面脚本超时,大概在45秒左右。
1.如果对端是winform服务端的话,建立socket连接发送字节流,用进度条控件实时获取进度信息,可以发送一个自己就显示一个比例
2.如果对端是webservice的话那就按照调用一次方法刷新一次进度,但是这里有问题,webservice作为对端接收的话不能一次处理大量数据,会导致页面脚本超时,大概在45秒左右。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
// 即时计算发送文件的状态
public class SendStatus
{
private FileInfo info;
private long fileBytes;
public SendStatus(string filePath)
{
info = new FileInfo(filePath);
fileBytes = info.Length;
}
public void PrintStatus(int sent)
{
string percent = GetPercent(sent);
Console.WriteLine("Sending {0} bytes, {1}% ...", sent, percent);
}
// 获得文件发送的百分比
public string GetPercent(int sent)
{
decimal allBytes = Convert.ToDecimal(fileBytes);
decimal currentSent = Convert.ToDecimal(sent);
decimal percent = (currentSent / allBytes) * 100;
percent = Math.Round(percent, 1); //保留一位小数
if (percent.ToString() == "100.0")
return "100";
else
return percent.ToString();
}
}
这是一个计算发送多少个字节的类,根据发送的文件大小以及已发送的字节数计算出发送的比例,看懂这个类之后调用相应的方法就会输出百分比了,如果想在窗体上实时显示的话就在这个类里加一个属性字段在主窗体上获得赋值给进度条就可以了。
也可以做一个事件来监听这里的方法。
public class SendStatus
{
private FileInfo info;
private long fileBytes;
public SendStatus(string filePath)
{
info = new FileInfo(filePath);
fileBytes = info.Length;
}
public void PrintStatus(int sent)
{
string percent = GetPercent(sent);
Console.WriteLine("Sending {0} bytes, {1}% ...", sent, percent);
}
// 获得文件发送的百分比
public string GetPercent(int sent)
{
decimal allBytes = Convert.ToDecimal(fileBytes);
decimal currentSent = Convert.ToDecimal(sent);
decimal percent = (currentSent / allBytes) * 100;
percent = Math.Round(percent, 1); //保留一位小数
if (percent.ToString() == "100.0")
return "100";
else
return percent.ToString();
}
}
这是一个计算发送多少个字节的类,根据发送的文件大小以及已发送的字节数计算出发送的比例,看懂这个类之后调用相应的方法就会输出百分比了,如果想在窗体上实时显示的话就在这个类里加一个属性字段在主窗体上获得赋值给进度条就可以了。
也可以做一个事件来监听这里的方法。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询