在.net中怎么使用c#写下载文件代码啊 在.net中怎么使用c#写下载文件代码啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 File 成员 提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建 FileStream 对象。 本帖最后由 net_lover 于 2011-08-16 13:09:36 编辑 string path = Server.MapPath(Rurl); FileInfo fi = new FileInfo(path); Response.Write(path); // 判断文件是否存在 if (fi.Exists) { // 将文件保存到本机上 Response.Clear(); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fi.Name)); Response.AddHeader("Content-Length", fi.Length.ToString()); Response.WriteFile(fi.FullName); Response.Filter.Close(); Response.End(); Response.Flush();下载文件 使用这个代码写的但是出现这种问题 !各位大侠 菜鸟求救啊!! 有一种很简单的方法就是直接连接到你需要下载文件夹的文件:代码如下: HttpContext.Current.Response.Redirect("http://baidu.com.cn" + filePath);不管你的文件有多么大都是可以的 而且它有一点好处就是直接调用你的下载软件进行下载! [code=C#] private static long GetFileSize(string url, out bool progressKnown) { HttpWebResponse response = null; long size = -1; try { response = (HttpWebResponse)GetRequest(url).GetResponse(); size = response.ContentLength; } finally { if (response != null) response.Close(); } return size; } //下载请求 private static HttpWebRequest GetRequest(string url) { HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Credentials = CredentialCache.DefaultCredentials; return request; }[/code] 关键是用这个代码string path = Server.MapPath(Rurl); FileInfo fi = new FileInfo(path); Response.Write(path); // 判断文件是否存在 if (fi.Exists) { // 将文件保存到本机上 Response.Clear(); Response.ContentType = "application/octet-stream"; Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fi.Name)); Response.AddHeader("Content-Length", fi.Length.ToString()); Response.WriteFile(fi.FullName); Response.Filter.Close(); Response.Flush(); Response.End();有时候能下载下来!有时候下载下来大小为0KB!!!!!!!!!! 不论文件大小!所有文件下载都是这样!!有时可以下载下来!有时候下载不来了 !自己做的.net下载,在本机测试和局域网其他机子测试都是这样! asp.net下载文件 /// <summary> /// 下载文件 /// </summary> /// <param name="vPath">文件路径(绝对路径)</param> public static void DownloadData(string path) { if (File.Exists(path)) { FileInfo DownloadFile = new FileInfo(path); System.Web.HttpContext.Current.Response.Clear(); System.Web.HttpContext.Current.Response.ClearHeaders(); System.Web.HttpContext.Current.Response.Buffer = false; System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream"; System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8)); System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString()); System.Web.HttpContext.Current.Response.WriteFile(DownloadFile.FullName); System.Web.HttpContext.Current.Response.Flush(); System.Web.HttpContext.Current.Response.End(); } else { throw new Exception("提示:下载失败,找不到该文件"); } } /// <summary> /// 分块下载 /// </summary> /// <param name="page">页面</param> /// <param name="fileNameWhenUserDownload">默认文件名</param> /// <param name="filePath">文件在服务器路径</param> public static void DownloadFile(System.Web.UI.Page page, string fileNameWhenUserDownload, string filePath) { System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath); if (fileInfo.Exists == true) { const long ChunkSize = 502400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力 byte[] buffer = new byte[ChunkSize]; page.Response.Clear(); System.IO.FileStream iStream = System.IO.File.OpenRead(filePath); long dataLengthToRead = iStream.Length;//获取下载的文件总大小 page.Response.ContentType = "application/octet-stream"; page.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(fileNameWhenUserDownload, System.Text.Encoding.UTF8)); while (dataLengthToRead > 0 && page.Response.IsClientConnected) { int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小 page.Response.OutputStream.Write(buffer, 0, lengthRead); page.Response.Flush(); dataLengthToRead = dataLengthToRead - lengthRead; } page.Response.Close(); } }非常方便,直接调用就可以。欢迎光临我的博客 public void FileDownload(string strFullName)//下载文件绝对路径 { if (File.Exists(strFullName)) { FileInfo DownloadFile = new FileInfo(strFullName); Response.Clear(); Response.ClearHeaders(); Response.Buffer = false; Response.ContentType = "application/octet-stream"; Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.Name, System.Text.Encoding.UTF8)); Response.AppendHeader("Content-Length", DownloadFile.Length.ToString()); Response.WriteFile(DownloadFile.FullName);//DownloadFile.FullName保存文件名 Response.Flush(); Response.End(); } else { Response.Write("<script>alert('文件不存在');</script>"); } }要加上命名空间:using System.IO; sqlserver2005计算时间问题 javascript取有些网页的html元素的offsetLeft,offsetTop数据不准,比如http://www.google.com.hk/ C# .net (用图片代替数字输出) 如何将一个page中的所有TextBox控件遍历然后将其Text属性=string.Empty;呢???? String 与 string 在用法上的区别? 怎么移动程序 vs2003 高分求一条正则表达式 JavaScript菜单问题。快来抢分。100分 客户端下载服务器上的文件时重命名问题 哪位哥们`说说博客圈大概怎么个做法` gridview固定表头实现排序功能 for循环奇怪错误,for(int i=0;i<10;i++)但循环内的i居然能取到10了??大牛解答。
string path = Server.MapPath(Rurl);
FileInfo fi = new FileInfo(path);
Response.Write(path);
// 判断文件是否存在
if (fi.Exists)
{
// 将文件保存到本机上
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fi.Name));
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.WriteFile(fi.FullName);
Response.Filter.Close();
Response.End();
Response.Flush();
下载文件 使用这个代码写的但是出现这种问题 !各位大侠 菜鸟求救啊!!
代码如下:
HttpContext.Current.Response.Redirect("http://baidu.com.cn" + filePath);
不管你的文件有多么大都是可以的 而且它有一点好处就是直接调用你的下载软件进行下载!
{
HttpWebResponse response = null;
long size = -1;
try
{
response = (HttpWebResponse)GetRequest(url).GetResponse(); size = response.ContentLength;
}
finally
{
if (response != null)
response.Close();
} return size;
}
//下载请求
private static HttpWebRequest GetRequest(string url)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.Credentials = CredentialCache.DefaultCredentials;
return request;
}[/code]
string path = Server.MapPath(Rurl);
FileInfo fi = new FileInfo(path);
Response.Write(path);
// 判断文件是否存在
if (fi.Exists)
{
// 将文件保存到本机上
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(fi.Name));
Response.AddHeader("Content-Length", fi.Length.ToString());
Response.WriteFile(fi.FullName);
Response.Filter.Close();
Response.Flush();
Response.End();
有时候能下载下来!
有时候下载下来大小为0KB!!!!!!!!!!
/// 下载文件
/// </summary>
/// <param name="vPath">文件路径(绝对路径)</param>
public static void DownloadData(string path)
{
if (File.Exists(path))
{
FileInfo DownloadFile = new FileInfo(path);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ClearHeaders();
System.Web.HttpContext.Current.Response.Buffer = false;
System.Web.HttpContext.Current.Response.ContentType = "application/octet-stream";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
System.Web.HttpContext.Current.Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
System.Web.HttpContext.Current.Response.WriteFile(DownloadFile.FullName);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.End();
}
else
{
throw new Exception("提示:下载失败,找不到该文件");
}
}
/// 分块下载
/// </summary>
/// <param name="page">页面</param>
/// <param name="fileNameWhenUserDownload">默认文件名</param>
/// <param name="filePath">文件在服务器路径</param>
public static void DownloadFile(System.Web.UI.Page page, string fileNameWhenUserDownload, string filePath)
{
System.IO.FileInfo fileInfo = new System.IO.FileInfo(filePath);
if (fileInfo.Exists == true)
{
const long ChunkSize = 502400;//100K 每次读取文件,只读取100K,这样可以缓解服务器的压力
byte[] buffer = new byte[ChunkSize];
page.Response.Clear();
System.IO.FileStream iStream = System.IO.File.OpenRead(filePath);
long dataLengthToRead = iStream.Length;//获取下载的文件总大小
page.Response.ContentType = "application/octet-stream";
page.Response.AddHeader("Content-Disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode(fileNameWhenUserDownload, System.Text.Encoding.UTF8));
while (dataLengthToRead > 0 && page.Response.IsClientConnected)
{
int lengthRead = iStream.Read(buffer, 0, Convert.ToInt32(ChunkSize));//读取的大小
page.Response.OutputStream.Write(buffer, 0, lengthRead);
page.Response.Flush();
dataLengthToRead = dataLengthToRead - lengthRead;
}
page.Response.Close(); }
}非常方便,直接调用就可以。
欢迎光临我的博客
{
if (File.Exists(strFullName))
{
FileInfo DownloadFile = new FileInfo(strFullName);
Response.Clear();
Response.ClearHeaders();
Response.Buffer = false;
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.Name, System.Text.Encoding.UTF8));
Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
Response.WriteFile(DownloadFile.FullName);//DownloadFile.FullName保存文件名
Response.Flush();
Response.End();
}
else
{
Response.Write("<script>alert('文件不存在');</script>");
}
}
要加上命名空间:using System.IO;