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

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时,后台代码压根地就没有响应
我晕

哪位老大看看是啥问题:)
...全文
423 11 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
在线等。。。。

62,075

社区成员

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

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

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

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