SiteWeaver 内容管理系统解决中文名乱码问题第三种方法
编辑:dnawo 日期:2008-11-07
在ASP中使用Response.Redirect跳转至含有中文名的资源地址进行下载时,你会发现保存窗口中文件名乱码:

动易发现过这个问题,在他们的SiteWeaver 内容管理系统中提供了相应的解决方法:
以上代码来自PowerEasy® SiteWeaver™ CMS 6.6 ACCESS Build 1030的Soft\ShowSoftDown.asp中。
方法一确实可以解决乱码问题,但在IE上首先会被信息栏拦截,提示如下内容:
引用内容
这造成了下载的不便,下边我们提供第三种方法并通过了测试(红色新增):

动易发现过这个问题,在他们的SiteWeaver 内容管理系统中提供了相应的解决方法:
复制内容到剪贴板
程序代码

'方法一可以解决下载地址中的中文名在另存为对框中的乱码问题,但只能直接点击下载
'Response.write "<meta http-equiv='refresh' content=""0;url='" & DownloadUrl & "'"">"
'方法二可以使用“目标另存为”,但会有中文乱码问题
Response.Redirect DownloadUrl
'Response.write "<meta http-equiv='refresh' content=""0;url='" & DownloadUrl & "'"">"
'方法二可以使用“目标另存为”,但会有中文乱码问题
Response.Redirect DownloadUrl
以上代码来自PowerEasy® SiteWeaver™ CMS 6.6 ACCESS Build 1030的Soft\ShowSoftDown.asp中。
方法一确实可以解决乱码问题,但在IE上首先会被信息栏拦截,提示如下内容:

为帮助保护您的安全,Internet Explorer 已经限制从此站点下载文件。单击此处查看选项…
这造成了下载的不便,下边我们提供第三种方法并通过了测试(红色新增):
复制内容到剪贴板
程序代码

Dim DownloadUrl, FileExt
DownloadUrl = PE_Content.GetDownloadUrl()
DownloadUrl = Replace(DownloadUrl, " ", " ")
Dim NewDownloadUrl
NewDownloadUrl = DownloadUrl
Set PE_Content = Nothing
Call CloseConn
If DownloadUrl = "ErrorDownloadUrl" Then Response.End
FileExt = LCase(Mid(DownloadUrl, InStrRev(DownloadUrl, ".") + 1))
If InStr(DownloadUrl, "://") <= 0 Then
DownloadUrl = "http://" & Trim(Request.ServerVariables("HTTP_HOST")) & DownloadUrl
End If
Select Case FileExt
Case "wmv", "mpg", "asf", "mp3", "mpeg", "avi"
ShowMediaPlayer (DownloadUrl)
Case "rm", "ra", "ram"
ShowRealPlayer (DownloadUrl)
Case Else
'方法一可以解决下载地址中的中文名在另存为对框中的乱码问题,但只能直接点击下载
'Response.write "<meta http-equiv='refresh' content=""0;url='" & DownloadUrl & "'"">"
'方法二可以使用“目标另存为”,但会有中文乱码问题
'Response.Redirect DownloadUrl
'方法三可以解决下载地址中的中文名在另存为对框中的乱码问题,可以使用“目标另存为”,站内资源有效
'服务器必须安装 AspUpload 上传组件 下载地址:http://down.chinaz.com/soft/9228.htm
If InStr(NewDownloadUrl, "://") <= 0 Then
Dim Upload
Set Upload = Server.CreateObject("Persits.Upload")
Upload.SendBinary Server.MapPath(NewDownloadUrl),True,"application/octet-binary",True
Else
Response.Redirect DownloadUrl
End If
End Select
DownloadUrl = PE_Content.GetDownloadUrl()
DownloadUrl = Replace(DownloadUrl, " ", " ")
Dim NewDownloadUrl
NewDownloadUrl = DownloadUrl
Set PE_Content = Nothing
Call CloseConn
If DownloadUrl = "ErrorDownloadUrl" Then Response.End
FileExt = LCase(Mid(DownloadUrl, InStrRev(DownloadUrl, ".") + 1))
If InStr(DownloadUrl, "://") <= 0 Then
DownloadUrl = "http://" & Trim(Request.ServerVariables("HTTP_HOST")) & DownloadUrl
End If
Select Case FileExt
Case "wmv", "mpg", "asf", "mp3", "mpeg", "avi"
ShowMediaPlayer (DownloadUrl)
Case "rm", "ra", "ram"
ShowRealPlayer (DownloadUrl)
Case Else
'方法一可以解决下载地址中的中文名在另存为对框中的乱码问题,但只能直接点击下载
'Response.write "<meta http-equiv='refresh' content=""0;url='" & DownloadUrl & "'"">"
'方法二可以使用“目标另存为”,但会有中文乱码问题
'Response.Redirect DownloadUrl
'方法三可以解决下载地址中的中文名在另存为对框中的乱码问题,可以使用“目标另存为”,站内资源有效
'服务器必须安装 AspUpload 上传组件 下载地址:http://down.chinaz.com/soft/9228.htm
If InStr(NewDownloadUrl, "://") <= 0 Then
Dim Upload
Set Upload = Server.CreateObject("Persits.Upload")
Upload.SendBinary Server.MapPath(NewDownloadUrl),True,"application/octet-binary",True
Else
Response.Redirect DownloadUrl
End If
End Select







评论: 6 | 引用: 0 | 查看次数: 5900





加Q群:5201846
5#
屋主,我开始无助,我按照你的方法把只用红色部分在ShowSoftDown.asp文件里面修改,好像还是不能下载到软件,仍然还是showDownload.asp的文件出现在本应该是软件下载的框内。你说程序中调试输出Server.MapPath(NewDownloadUrl),我把他删除在点击下载就找不到网页了。
看你写的那么简单就实现了,为什么我的这个会变得那么复杂?会不会我的领悟能力太差,还是我太愚笨或者运气很烂。
看你写的那么简单就实现了,为什么我的这个会变得那么复杂?会不会我的领悟能力太差,还是我太愚笨或者运气很烂。
4#
Aspupload只是一个上传组件,在服务器上安装后就能调用,和IIS没有关系。
这样,安装Aspupload后,新建一个asp文件,直接拿红色部分代码测试下载,OK了再放SiteWeaver上测试。
还可以尝试用无组件来保存文件,参考[url=article.asp?id=1058]《弹出保存窗口下载服务器上的任何文件[未知大小]》[/url]一文。
需要说明的是,这种下载方式比较占用服务器资源,使用要三思。
这样,安装Aspupload后,新建一个asp文件,直接拿红色部分代码测试下载,OK了再放SiteWeaver上测试。
还可以尝试用无组件来保存文件,参考[url=article.asp?id=1058]《弹出保存窗口下载服务器上的任何文件[未知大小]》[/url]一文。
需要说明的是,这种下载方式比较占用服务器资源,使用要三思。
地板
屋主,昨天似乎有个地方我写错了,有对话框弹出但是不知道为什么上面写的可下载程序不是软件,而是softDownload.asp的文件,可它的大小却和上传软件的大小一样。打开后仅仅是几个字母。
屋主提供的Aspuploa软件直接在本机上安装就可以了吧。在IIS里面需要指向到网站的地址吗?还是指向Aspuploa的安装地址上?
屋主提供的Aspuploa软件直接在本机上安装就可以了吧。在IIS里面需要指向到网站的地址吗?还是指向Aspuploa的安装地址上?
板凳
不修改时能正常下载吗?如果可以,程序中调试输出Server.MapPath(NewDownloadUrl)看看是否和真实地址一样,有问题再做相应修改。
站长站提供的AspUpload应该没问题吧,要不上百度搜索下载个安装也可以的。
站长站提供的AspUpload应该没问题吧,要不上百度搜索下载个安装也可以的。
沙发
屋主,请允许我这样称呼,我按照你的方法,将ShowSoftDown.asp文件修改成你写的教程那样,不过,我这显示出并不是弹出文件下载对话框,而是无法链接的页面,我觉得很奇怪。
对了你给的ASPDownload的软件下载安装后提示有恶意软件。
我想问情况为什么会这样呢?
期盼你的答复。
对了你给的ASPDownload的软件下载安装后提示有恶意软件。
我想问情况为什么会这样呢?
期盼你的答复。
发表评论
请登录后再发表评论!