我写了一段代码提供文件下载功能,代码如下: Public Shared Sub SendFileToClient(ByRef ServerResp As System.Web.HttpResponse, ByVal FilePath As String, Optional ByVal FileName As String = "")
Dim aFile As New FileInfo(FilePath)
Dim name As String
If FileName <> "" Then
name = FileName
Else
name = Path.GetFileName(FilePath)
End If ServerResp.Clear()
ServerResp.ClearHeaders()
ServerResp.BufferOutput = False
ServerResp.ContentType = "application/octet-stream" ServerResp.AppendHeader("Content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(name, System.Text.Encoding.UTF8))
ServerResp.AddHeader("Content-Length", aFile.Length.ToString())
ServerResp.WriteFile(FilePath)
ServerResp.Flush()
ServerResp.End()
End Sub 客户端如果是2000系统,下载文件很正常,但客户端如果是xp,下载时就没有响应。不知原因何在,请高手指点。 注:出现这种情况可能有以下两点原因
1.这段代码可能有问题,只适用于客户端为2000的情况,而不支持客户端为xp的情况,那如何修改代码,才能使代码即支持2000,又能支持xp的客户端?
2.这段代码本身没有问题,而是客户端的设置不当所造成,那如何设置xp的客户段,才能使这段代码在客户段为xp的情况下也运行正常。
Dim aFile As New FileInfo(FilePath)
Dim name As String
If FileName <> "" Then
name = FileName
Else
name = Path.GetFileName(FilePath)
End If ServerResp.Clear()
ServerResp.ClearHeaders()
ServerResp.BufferOutput = False
ServerResp.ContentType = "application/octet-stream" ServerResp.AppendHeader("Content-disposition", "attachment;filename=" + HttpUtility.UrlEncode(name, System.Text.Encoding.UTF8))
ServerResp.AddHeader("Content-Length", aFile.Length.ToString())
ServerResp.WriteFile(FilePath)
ServerResp.Flush()
ServerResp.End()
End Sub 客户端如果是2000系统,下载文件很正常,但客户端如果是xp,下载时就没有响应。不知原因何在,请高手指点。 注:出现这种情况可能有以下两点原因
1.这段代码可能有问题,只适用于客户端为2000的情况,而不支持客户端为xp的情况,那如何修改代码,才能使代码即支持2000,又能支持xp的客户端?
2.这段代码本身没有问题,而是客户端的设置不当所造成,那如何设置xp的客户段,才能使这段代码在客户段为xp的情况下也运行正常。
解决方案 »
- Web下拉菜单问题
- 将数据库中的二进制流读出
- 求助?写入图片,访问被拒绝
- 用强类型的时候DBNull的问题
- 怎样才能把上传的图片保存在另一台服务器上===============================?
- 毕设老师BT,学生无奈。在此向各位高人请教!~
- freetextbox 里输入的时候回车换行能不能是<br>而不是<p>啊!!
- 初学.net,作了一个bbs.但在添加编辑控件的时候无法绑定数据,请前辈指教!谢谢!
- 问一个比较菜的问题!!
- 为什么好多控件在XP下面不显示XP风格?
- DataGrid修改后一齐保存,请问如何判断是否有过修改?
- [讨论]发现很多人问如何显示在线人数,和所在位置,我提种方法供大家讨论:
dim file as system.io.fileinfo=new system.io.fileinfo(server.mappath(themp3))
response.clear()
response.addheader("content-disposition","attachment;filename=" + file.name)
response.addheader("content-length",file.length.tostring())
response.contenttype="application/octet-stream"
response.writefile(file.fullname)
response.end
我在一台xp机器上测试过,一开始没有安装sp2,下载正常
装完sp2后,就出现下载无响应的情况了。
我把防火墙关闭后仍然不行。
应该怎么办呢?
tools--->pop-up Blocker--->
pop-up Blocker settings-->
address of web site to allow-->
add---->添加你要访问的服务器的ipsp2 的这个功能负责屏蔽广告,也就是你装了3721,google之都会有此问题。
filter level ----〉 设成
low: allow pop-ups from secure sites
这也是因为用户触发了事件。
所以xp+sp2有时不能弹出对话框,只能在下载时按住Ctrl键才能允许弹出。
我的文件下载确实是点击“下载”按钮时才触发的;
而且我点击“下载”按钮时按住"Ctrl"或"Shit"也没有弹出下载对话框。
确认一下
1.在address of web site to allow里添加你要访问的服务器ip
2.一直按住"Ctrl",点击“下载”按钮,下载成功后松开"Ctrl"键。
按住"Ctrl",点击“下载”按钮,弹不出下载对话框
下面的Status栏里,一直再不停地刷新显示URL,鼠标也不停的再闪。
哈哈,居然在这里碰到你
快去叫你们公司的牛人来看看这个问题。
我这个操作页面是放在一个frame里的
主页面包括3个frame:top,left,main
操作页面就是main
如果操作页面不包含在frame中一切正常,只是包含在frame中时才出现那种情况,我设断点调试时发现点击“下载”钮后客户端不停的post到服务器端。
我在frameset 的 onbeforeunload事件中删除登录者存于Application中的账号,以便用户不慎关闭浏览器后能马上重新登录。
正如楼上所说,Win XP sp2由于安全性方面的考虑,点击“下载”钮后也会触发frameset的onbeforeunload事件,导致莫名其妙的循环post(2000以及xp+sp1就不会出现这种情况)。
最后我把frameset中的onbeforeunload事件处理删除,就可以正常下载了。
谢谢各位的帮助。