文件下载的问题 第一次正常第二次就出错了?!!

Stvan 2005-07-07 03:25:13
代码如下:
Private Sub LinkButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LinkButton1.Click
Dim strFile As String
strFile = "D:\2772311296623764.jpg"

Response.Clear()
Response.ClearHeaders()
Response.ContentEncoding = System.Text.Encoding.UTF8
Response.ContentType = "application/octet-stream"
Dim fi As New System.IO.FileInfo(strFile)
Response.AddHeader("Content-Disposition", "attachment; filename=" & HttpUtility.UrlEncode(fi.Name))
Response.AddHeader("Content-Length", fi.Length.ToString())
Dim tmpbyte(1024 * 8) As Byte
Dim fs As System.IO.FileStream
fs = fi.OpenRead()
Dim count As Integer
While fs.Read(tmpbyte, 0, tmpbyte.Length) > 0
Response.BinaryWrite(tmpbyte)
Response.Flush()
End While

fs.Close()
Response.End()
End Sub

运行后,第一次点击LinkButton弹出下载dialog,正常
然后点击保存按钮之后,再点击LinkButton就出错了,说没有权限显示此页面
debug后台代码发现第二次点击LinkButton时,后台代码压根地就没有响应
我晕

哪位老大看看是啥问题:)
...全文
449 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Stvan 2005-07-08
  • 打赏
  • 举报
回复
问题解决了
我把
While fs.Read(tmpbyte, 0, tmpbyte.Length) > 0
Response.BinaryWrite(tmpbyte)
Response.Flush()
End While
改为Response.BinaryWrite(tmpbyte)
一次读完就没有问题了,很是怪异

to:mao5000(怕鱼的水)
我这个没有放在框架里。用iframe解决也可以的

总之,谢谢大家 结贴!
mao5000 2005-07-07
  • 打赏
  • 举报
回复
to: cctvb6690(111)

你把你的程序放到一个框架中看看有没有问题。。
mao5000 2005-07-07
  • 打赏
  • 举报
回复
不知道就直接up,!!!不要误人子弟!!!

遇到这个问题的原因,
你的下载页面是在框架里,不要放在框架中就没问题了。。

但是有的时候在框架中也不会出现问题,比如有个别的xp系统。。。

上次花了200分也没有解决这个问题,并且一些同行们拿回原程序测试也是这样的结果,没有人分析出为什么会有问题,只能说ie有问题。。


有一个具体的解决方法,就是绕过这个问题。。在页面建立一个iframe,每次提交到iframe中去。。就可以解决这个问题了。
cctvb6690 2005-07-07
  • 打赏
  • 举报
回复
Dim path As String
Dim FileSize As Long
Dim Fs As FileStream

Response.Clear()
path = Server.MapPath("111.mp3")
Fs = New FileStream(path, FileMode.Open, FileAccess.Read)
FileSize = Fs.Length
Response.ContentType = "application/octet-stream"
Response.AddHeader("Content-Disposition", "attachment; filename=111.mp3")
Response.AddHeader("Content-Length", FileSize.ToString())

Dim FileBuffer(FileSize) As Byte
Fs.Read(FileBuffer, 0, FileSize)
Response.BinaryWrite(FileBuffer)
Response.End()
Fs.Close()
Fs = Nothing
Stvan 2005-07-07
  • 打赏
  • 举报
回复
第一次点击LinkButton 可以弹出下载dialog,只要不点打开或保存按钮
再点也没有问题,能正常弹出下载dialog
但是如果点击了打开或保存按钮,然后再点LinkButton ,就出错了
后台代码压根地就没有响应

ps: FS的问题 FS是什么?不知道啊 :(
UT_Test 2005-07-07
  • 打赏
  • 举报
回复
不排除IIS有问题的可能.
如果第一次没问题,而第二次有问题的话.FS的问题
Stvan 2005-07-07
  • 打赏
  • 举报
回复
HyperLink 我试过了
直接把url指向要下载的文件
但是这样不能对所有类型的下载文件都弹出下载dialog,有的ie能解析的就直接用ie打开了
还有就是对aspx页面,点击后没有反应
不知是我的做法有问题还是我的iis设置有问题
所以用LinkButton 来实现,呵呵
jadeface 2005-07-07
  • 打赏
  • 举报
回复
文件下载用 LinkButton 实现,感觉比较怪,一般都用 HyperLink 解决。
Stvan 2005-07-07
  • 打赏
  • 举报
回复
Page_Load没有写代码,所有的下载操作都在这个LinkButton1.Click事件里
chengbo1983 2005-07-07
  • 打赏
  • 举报
回复
不太清楚
看看你的Page_Load代码呢
Stvan 2005-07-07
  • 打赏
  • 举报
回复
在线等。。。。
访问真八字排盘系统介绍: 1、八字排盘 八字排盘是将年月日时按照天干地支的形式进行排列,一个时间单位代表了一个柱。八字由年柱、月柱、日柱和时柱共四个柱组成,也被称为四柱八字。八字学中基于中国阴阳五行、天干地支与刑冲克害、以及民间盲派的神煞论等方式,进一步预测爱情顺遂、工作高低、姻缘好坏、财富高低、学业成就、身体健康等事的学问。 八字排盘由以下元素组合:年月日时四柱、大运干支、胎元 、流年干支、十神、地势、神煞等。生辰八字不只是把干支历计算出来,而还要遵守月令、节令的强弱,时辰的阴阳变化进行校正。排盘分析,就是根据出生者的性别、天干地支的阴阳五行关系、进一步推算出来的一套方法论,给预测者做人生吉凶的参考数据,在未来事业、财运、婚姻、家庭等问题时,能做出风险较低的决策。 八字排盘怎么看 八字排盘由年、月、日、时四柱组成,每柱包含一个天干和一个地支,共八个字。年柱代表出生的年份,月柱代表出生的月份,日柱代表出生的日期,时柱则代表出生的时辰。每个柱的干支组合都会对个人的命运产生影响。天干地支旁边标注的正财、偏财、偏印、正印、比肩、劫财、食神、伤官、正官、七杀等,称为十神。 2、八字排盘软件介绍 我们是腾讯云市场金牌合作伙伴,广州正规软件开发公司,开发的八字排盘系统数据最全面精准,我们八字排盘采用最精确的排盘程序,而且运用“真太阳时”,进行更精确的时间划分。大家都知道我们使用的北京时间,是统一规定的标准时间。而八字排盘需要相对于太阳方位的天文时间,即平太阳时。我们国家地大物博,北京时间19时,哈尔滨已经夜幕降临,而新疆却还是太阳高挂,这时哈尔滨的天文时间可能在20:00以后,而新疆的天文时间可能在16时以前。北京时间是东经120度经线的平太阳时,如果您出生地的经度与北京时间所处的经度差异较大,或者处于单数时间点的前后,比如6点差一刻,8点,10点15分等

62,243

社区成员

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

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

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

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