请教个关于下载的方法 来者给分.............

Dotar 2012-08-02 04:24:11
我的下载功能是在 页面中直接给了个超链接样式的 <a href="文件全路径">下载</a> 这种情况下 如果文件是 压缩文件是可以下载的 \ 常见的文本格式图片格式直接就打开了 \ 一些特殊的不常见的后缀的文件 比如 .REP等等 都不能下载 或者打开

如何才能让所有的文件都能下载 ,需要加什么吗? 还是要在注册表里注册什么?
...全文
141 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Yon2068 2012-08-03
  • 打赏
  • 举报
回复
IIS机制
haiziguo 2012-08-02
  • 打赏
  • 举报
回复
有没有见过下载文件时,把页面下载下来了,文件还是没有下载下来
porschev 2012-08-02
  • 打赏
  • 举报
回复

//1.页面上用linkbutton
<asp:LinkButton ID="lbtnDownload" runat="server" onclick="lbtnDownload_Click">下载</asp:LinkButton>

//2.事件中用字符流方式下载
protected void lbtnDownload_Click(object sender, EventArgs e)
{
string fileName = "1.REP";//客户端保存的文件名
string filePath = Server.MapPath("1.REP");//路径

//以字符流的形式下载文件
System.IO.FileStream fs = new System.IO.FileStream(filePath, System.IO.FileMode.Open);
byte[] bytes = new byte[(int)fs.Length];
fs.Read(bytes, 0, bytes.Length);
fs.Close();
Response.ContentType = "application/octet-stream";
//通知浏览器下载文件而不是打开
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
}
让IE灭亡 2012-08-02
  • 打赏
  • 举报
回复
你也可以实现点击链接使用迅雷下载,具体参考:
http://www.cnblogs.com/jyan/archive/2012/06/13/2547300.html
实现方法很简单,在后台创建一个公共方法,在前台引入相应的js,然后链接中对要现在的文件地址进行编码
全栈极简 2012-08-02
  • 打赏
  • 举报
回复
iis只提供了几种常用的格式的自动下载,非常用格式的需要添加MIME类型。方法如上或者百度。
让IE灭亡 2012-08-02
  • 打赏
  • 举报
回复
IIs的机制问题,比如图片之类的,他会直接给你返回图片的内容,结果就是在浏览器中直接显示图片。下载的话建议你使用流的形式输出给客户端,给你段代码参考:

string filePath = Server.MapPath("/") +Url;
#region 文件下载
// 创建一比特数组
byte[] buffer = new Byte[10240];
// 指定要下载文件的路径.
// 或取文件名包括扩展名
string fileName = Path.GetFileName(filePath);
Stream fileStream = null;
try
{
// 打开文件
fileStream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
Response.Clear();

// 获取文件的大小
long fileSize = fileStream.Length;

long sum = 0;
if (Request.Headers["Range"] != null)
{
Response.StatusCode = 206; // 表示返回到客户端的 HTTP 输出状态的整数。默认值为 200。
sum = long.Parse(Request.Headers["Range"].Replace("bytes=", "").Replace("-", ""));
}
if (sum != 0)
{
Response.AddHeader("Content-Range", "bytes " + sum.ToString() + "-" + ((long)(fileSize)).ToString() + "/" + fileSize.ToString());
}
// 获取部分http头信息
Response.AddHeader("Content-Length", ((long)(fileSize - sum)).ToString());
Response.ContentType = "application/octet-stream";
//获取文件来源
Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(Request.ContentEncoding.GetBytes(fileName)));
// Response.Flush();
fileStream.Position = sum; //设置当前流位置
fileSize = fileSize - sum;
// 当文件大小大于0是进入循环
while (fileSize > 0)
{
// 判断客户端是否仍连接在服务器
if (Response.IsClientConnected)
{
// 获取缓冲区中的总字节数.
int length = fileStream.Read(buffer, 0, 10240);

// 写入数据
Response.OutputStream.Write(buffer, 0, length);

// 将缓冲区的输出发送到客户端
Response.Flush();

buffer = new Byte[10240];
fileSize = fileSize - length;
}
else
{
//当用户断开后退出循环
fileSize = -1;
}
}
}
catch (Exception ex)
{
Response.Write("Error : " + ex.Message);
}
finally
{
if (fileStream != null)
{
//关闭文件
fileStream.Close();
}
Response.End();
}

url就是你要下载的文件,是文件的相对路径,这样你在页面上放个按钮,在按钮的后台事件中将要下载的文件读入流,然后输出到客户端就行
心态决定姿态 2012-08-02
  • 打赏
  • 举报
回复

Response.ContentType = "application/x-zip-compressed";
Response.AddHeader("Content-Disposition", "attachment;filename=jquery.form.js");
string filename = Server.MapPath("js/jquery.form.js");
Response.TransmitFile(filename);


这个方式可以试试
天下在我心 2012-08-02
  • 打赏
  • 举报
回复
特殊格式。比如.rep不能下载,需要你在IIS做相应的设置。

属性->HTTP头->MIME类型->新建(添加)扩展名填入文件扩展名(.rep),
MIME类型application
这样这些特殊格式的文件就可以下载了。
至于那些下载的直接打开了,跟你的电脑设置有关。
Dotar 2012-08-02
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
可以压缩一下,然后下载压缩包
[/Quote]

这是最无奈的办法了........忽略
lw_881020 2012-08-02
  • 打赏
  • 举报
回复
<a href="文件全路径"+".rar">不知道这样行不
  • 打赏
  • 举报
回复
可以压缩一下,然后下载压缩包

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧