SiteWeaver 内容管理系统解决中文名乱码问题第三种方法

在ASP中使用Response.Redirect跳转至含有中文名的资源地址进行下载时,你会发现保存窗口中文件名乱码:



动易发现过这个问题,在他们的SiteWeaver 内容管理系统中提供了相应的解决方法:

'方法一可以解决下载地址中的中文名在另存为对框中的乱码问题,但只能直接点击下载
'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



评论: 6 | 引用: 0 | 查看次数: 5684
dnawo[2009-06-19 11:09 AM | | | 120.36.4.61 | del | 回复回复]
6#
加Q群:5201846
MOCO[2009-06-19 10:21 AM | | | 211.162.234.152 | del | 回复回复]
5#
屋主,我开始无助,我按照你的方法把只用红色部分在ShowSoftDown.asp文件里面修改,好像还是不能下载到软件,仍然还是showDownload.asp的文件出现在本应该是软件下载的框内。你说程序中调试输出Server.MapPath(NewDownloadUrl),我把他删除在点击下载就找不到网页了。

看你写的那么简单就实现了,为什么我的这个会变得那么复杂?会不会我的领悟能力太差,还是我太愚笨或者运气很烂。
dnawo[2009-06-18 10:42 AM | | | 120.36.4.53 | del | 回复回复]
4#
Aspupload只是一个上传组件,在服务器上安装后就能调用,和IIS没有关系。

这样,安装Aspupload后,新建一个asp文件,直接拿红色部分代码测试下载,OK了再放SiteWeaver上测试。

还可以尝试用无组件来保存文件,参考[url=article.asp?id=1058]《弹出保存窗口下载服务器上的任何文件[未知大小]》[/url]一文。

需要说明的是,这种下载方式比较占用服务器资源,使用要三思。
MOCO[2009-06-18 09:10 AM | | | 211.162.234.152 | del | 回复回复]
地板
屋主,昨天似乎有个地方我写错了,有对话框弹出但是不知道为什么上面写的可下载程序不是软件,而是softDownload.asp的文件,可它的大小却和上传软件的大小一样。打开后仅仅是几个字母。

屋主提供的Aspuploa软件直接在本机上安装就可以了吧。在IIS里面需要指向到网站的地址吗?还是指向Aspuploa的安装地址上?
dnawo[2009-06-18 02:38 AM | | | 120.67.164.39 | del | 回复回复]
板凳
不修改时能正常下载吗?如果可以,程序中调试输出Server.MapPath(NewDownloadUrl)看看是否和真实地址一样,有问题再做相应修改。
站长站提供的AspUpload应该没问题吧,要不上百度搜索下载个安装也可以的。
MOCO[2009-06-17 04:17 PM | | | 211.162.234.152 | del | 回复回复]
沙发
屋主,请允许我这样称呼,我按照你的方法,将ShowSoftDown.asp文件修改成你写的教程那样,不过,我这显示出并不是弹出文件下载对话框,而是无法链接的页面,我觉得很奇怪。
对了你给的ASPDownload的软件下载安装后提示有恶意软件。
我想问情况为什么会这样呢?
期盼你的答复。
发表评论
登录后再发表评论!