有一个很简单的方法,如下,但是不稳定,想问问大家有没有收藏的关于C#下载文件不错的类,能够 断点续传,而且对 大文件下载页很稳定。
[align=left]WebClient wc = new WebClient();
string url = "http://www.baidu.com/img/bdlogo.gif";
string fileName = "c:\\34.gif";
wc.DownloadFile(url, fileName);[/align]
谢谢各位;啦
7 个解决方案
#1
这类简单的开发,需要自己做。你的这样两行代码,看不出你了解断点续传下载的机制。你还是需要学点知识,自己有能力写出比这个2行代码更高级一点的程序来。
#2
下载文件恢复(resuming),技术不算难。
我找了一个FTP 的,思路基本一致。只是用到的类换一下。
http://wenku.baidu.com/view/30dc5d165f0e7cd1842536cb.html
我找了一个FTP 的,思路基本一致。只是用到的类换一下。
http://wenku.baidu.com/view/30dc5d165f0e7cd1842536cb.html
#3
用Range标头:Range: bytes=0-5
#4
先HEAD请求,然后Get+Range,不过某些服务器可能不支持。
#5
建议你定义一个大点的缓存区 不然不这个肯定不稳定
#6
我也在弄,自己建站,自己写code,学习中
#7
指定文件下载问题
//首次加载页面方法
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)//首次加载
{
addListBox(); //调用用户自定义的addListBox方法
}
}
//被调用的自定义方法
protected void addListBox()
{
//将指定文件夹中的文件保存到字符串数组中
string[] name = Directory.GetFiles(Server.MapPath("File"));
foreach (string s in name)
{
//将文件名添加到ListBox中
LisBoxFile.Items.Add(Path.GetFileName(s));
}
}//CodeGo.net/
//实现ListBox控件赋值给Session变量中
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Session["txt"] = LisBoxFile.SelectedValue.ToString();//从ListBox控件中选择的项赋值给Session["txt"]中
}
//保存路径下载该文件
protected void dFile()
{
//判断是否选择文件名
if (LisBoxFile.SelectedValue != "")
{
if (Session["txt"] != "")
{ //获取文件路径
string path = Server.MapPath("File/") + Session["txt"].ToString();
//初始化 FileInfo 类的实例,它作为文件路径的包装
FileInfo fi = new FileInfo(path);
//判断文件是否存在
if (fi.Exists)
{
//将文件保存到本机上
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fi.Name));
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Filter.Close();
Response.WriteFile(fi.FullName);
Response.End();
}
}
}
else
{
Page.RegisterStartupScript("sb", "<script>alert('请您先选择文件名')</script>");
}
}
//指定下载到本地磁盘中
protected void ImgBtnDownFile_Click(object sender, ImageClickEventArgs e)
{
dFile();//调用用户自定义的dFile方法,实现
}
//断点续传跳转按钮
protected void ImgBtnUp_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("Default.aspx");// 跳转到文件下载
}
//首次加载页面方法
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)//首次加载
{
addListBox(); //调用用户自定义的addListBox方法
}
}
//被调用的自定义方法
protected void addListBox()
{
//将指定文件夹中的文件保存到字符串数组中
string[] name = Directory.GetFiles(Server.MapPath("File"));
foreach (string s in name)
{
//将文件名添加到ListBox中
LisBoxFile.Items.Add(Path.GetFileName(s));
}
}//CodeGo.net/
//实现ListBox控件赋值给Session变量中
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Session["txt"] = LisBoxFile.SelectedValue.ToString();//从ListBox控件中选择的项赋值给Session["txt"]中
}
//保存路径下载该文件
protected void dFile()
{
//判断是否选择文件名
if (LisBoxFile.SelectedValue != "")
{
if (Session["txt"] != "")
{ //获取文件路径
string path = Server.MapPath("File/") + Session["txt"].ToString();
//初始化 FileInfo 类的实例,它作为文件路径的包装
FileInfo fi = new FileInfo(path);
//判断文件是否存在
if (fi.Exists)
{
//将文件保存到本机上
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fi.Name));
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Filter.Close();
Response.WriteFile(fi.FullName);
Response.End();
}
}
}
else
{
Page.RegisterStartupScript("sb", "<script>alert('请您先选择文件名')</script>");
}
}
//指定下载到本地磁盘中
protected void ImgBtnDownFile_Click(object sender, ImageClickEventArgs e)
{
dFile();//调用用户自定义的dFile方法,实现
}
//断点续传跳转按钮
protected void ImgBtnUp_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("Default.aspx");// 跳转到文件下载
}
#1
这类简单的开发,需要自己做。你的这样两行代码,看不出你了解断点续传下载的机制。你还是需要学点知识,自己有能力写出比这个2行代码更高级一点的程序来。
#2
下载文件恢复(resuming),技术不算难。
我找了一个FTP 的,思路基本一致。只是用到的类换一下。
http://wenku.baidu.com/view/30dc5d165f0e7cd1842536cb.html
我找了一个FTP 的,思路基本一致。只是用到的类换一下。
http://wenku.baidu.com/view/30dc5d165f0e7cd1842536cb.html
#3
用Range标头:Range: bytes=0-5
#4
先HEAD请求,然后Get+Range,不过某些服务器可能不支持。
#5
建议你定义一个大点的缓存区 不然不这个肯定不稳定
#6
我也在弄,自己建站,自己写code,学习中
#7
指定文件下载问题
//首次加载页面方法
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)//首次加载
{
addListBox(); //调用用户自定义的addListBox方法
}
}
//被调用的自定义方法
protected void addListBox()
{
//将指定文件夹中的文件保存到字符串数组中
string[] name = Directory.GetFiles(Server.MapPath("File"));
foreach (string s in name)
{
//将文件名添加到ListBox中
LisBoxFile.Items.Add(Path.GetFileName(s));
}
}//CodeGo.net/
//实现ListBox控件赋值给Session变量中
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Session["txt"] = LisBoxFile.SelectedValue.ToString();//从ListBox控件中选择的项赋值给Session["txt"]中
}
//保存路径下载该文件
protected void dFile()
{
//判断是否选择文件名
if (LisBoxFile.SelectedValue != "")
{
if (Session["txt"] != "")
{ //获取文件路径
string path = Server.MapPath("File/") + Session["txt"].ToString();
//初始化 FileInfo 类的实例,它作为文件路径的包装
FileInfo fi = new FileInfo(path);
//判断文件是否存在
if (fi.Exists)
{
//将文件保存到本机上
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fi.Name));
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Filter.Close();
Response.WriteFile(fi.FullName);
Response.End();
}
}
}
else
{
Page.RegisterStartupScript("sb", "<script>alert('请您先选择文件名')</script>");
}
}
//指定下载到本地磁盘中
protected void ImgBtnDownFile_Click(object sender, ImageClickEventArgs e)
{
dFile();//调用用户自定义的dFile方法,实现
}
//断点续传跳转按钮
protected void ImgBtnUp_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("Default.aspx");// 跳转到文件下载
}
//首次加载页面方法
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)//首次加载
{
addListBox(); //调用用户自定义的addListBox方法
}
}
//被调用的自定义方法
protected void addListBox()
{
//将指定文件夹中的文件保存到字符串数组中
string[] name = Directory.GetFiles(Server.MapPath("File"));
foreach (string s in name)
{
//将文件名添加到ListBox中
LisBoxFile.Items.Add(Path.GetFileName(s));
}
}//CodeGo.net/
//实现ListBox控件赋值给Session变量中
protected void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
{
Session["txt"] = LisBoxFile.SelectedValue.ToString();//从ListBox控件中选择的项赋值给Session["txt"]中
}
//保存路径下载该文件
protected void dFile()
{
//判断是否选择文件名
if (LisBoxFile.SelectedValue != "")
{
if (Session["txt"] != "")
{ //获取文件路径
string path = Server.MapPath("File/") + Session["txt"].ToString();
//初始化 FileInfo 类的实例,它作为文件路径的包装
FileInfo fi = new FileInfo(path);
//判断文件是否存在
if (fi.Exists)
{
//将文件保存到本机上
Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fi.Name));
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.ContentType = "application/octet-stream";
Response.Filter.Close();
Response.WriteFile(fi.FullName);
Response.End();
}
}
}
else
{
Page.RegisterStartupScript("sb", "<script>alert('请您先选择文件名')</script>");
}
}
//指定下载到本地磁盘中
protected void ImgBtnDownFile_Click(object sender, ImageClickEventArgs e)
{
dFile();//调用用户自定义的dFile方法,实现
}
//断点续传跳转按钮
protected void ImgBtnUp_Click(object sender, ImageClickEventArgs e)
{
Response.Redirect("Default.aspx");// 跳转到文件下载
}