文件下载时,如果是选择打开,那么下载框会打开两次?

wincore 2004-10-28 08:15:05
在用如下代码,下载文件选择打开,那么下载框会打开两次,为什么呢?
Page.Response.Clear();
Page.Response.ContentType = "Application/octet-stream";
Page.Response.Charset = "utf-8";
Page.Response.AppendHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode(ClientFileName,System.Text.Encoding.UTF8));
Page.Response.WriteFile(ServerFileName);
Page.Response.Flush();
Page.Response.End();


我发现对于小的文件打开没有问题,如果文件大了,不仅打开2次,而且这个下载结束后,还会出现一个叫本错误,“拒绝访问!”

如果是Word文档,还会出现文件名字的乱码?

...全文
205 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wincore 2004-11-15
  • 打赏
  • 举报
回复
改用OCX了,web方式的总是出问题
wincore 2004-11-15
  • 打赏
  • 举报
回复
谢谢
WZCNet 2004-10-29
  • 打赏
  • 举报
回复
看看我的这个下载方法对你有没有帮助。我一直都在用的。
private static bool DownFile(System.Web.HttpResponse Response,string fileName,string fullPath)
{
try
{
Response.ContentType = "application/octet-stream";

Response.AppendHeader("Content-Disposition","attachment;filename=" +
HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) + ";charset=GB2312");
System.IO.FileStream fs= System.IO.File.OpenRead(fullPath);
long fLen=fs.Length;

//每100K同时下载数据
int size=102400;

//指定缓冲区的大小
byte[] readData = new byte[size];

//如果每次下载的数据大于文件的大小,改变下载数据大小为文件的大小
if(size > fLen)
{
size=Convert.ToInt32(fLen);
}

long fPos=0;
bool isEnd=false;

//读文件
while (!isEnd)
{
if((fPos+size)>fLen)
{
size=Convert.ToInt32(fLen-fPos);
readData = new byte[size];
isEnd=true;
}

//读入一个压缩块
fs.Read(readData, 0, size);
Response.BinaryWrite(readData);
fPos+=size;
}
fs.Close();

//将服务器上的文件删除
System.IO.File.Delete(fullPath);
return true;
}
catch
{
return false;
}
}
wincore 2004-10-29
  • 打赏
  • 举报
回复
没有解决,如果您可以回答,非常感谢
shangwg 2004-10-28
  • 打赏
  • 举报
回复
好像是客户端的问题,试试不同的客户端吧。
wincore 2004-10-28
  • 打赏
  • 举报
回复
如果Page.Response.End();去掉!,则叫本的错误依然存在!
Page.Response.Flush();//这一句不要试试.

都不可以,什么问题都没有解决!

问题:
1、打开文件保存时,打开2次。
2、还会出现一个叫本错误,“拒绝访问!”

都没有人解决吗?我几乎查了所有的帖子,快要对论坛失去信心了


wincore 2004-10-28
  • 打赏
  • 举报
回复
好,试试看
roapzone 2004-10-28
  • 打赏
  • 举报
回复
Page.Response.End();去掉!
roapzone 2004-10-28
  • 打赏
  • 举报
回复
字符编码Page.Response.Charset = "gb2312";
xiaohutushen 2004-10-28
  • 打赏
  • 举报
回复
Page.Response.Flush();//这一句不要试试.
wincore 2004-10-28
  • 打赏
  • 举报
回复
自己顶一下,没有人理我:)

62,047

社区成员

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

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

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

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