pjblog附件信息出错:Server.MapPath、FSO、ADODB.Stream超长路径问题

刚刚第一次使用pjblog附件的防盗功能,却发现不能正常显示出来。后台管理处查看,点击“附件信息”却出现如下错误提示:

Server.MapPath() error 'ASP 0214 : 80004005'
Invalid Path parameter

/control/f_control.asp, line 247

The Path parameter excedes the maximum length allowed.

看最后一句提示,显然是字符过长引起的问题,看来这又是一个bug了

asp错误代码:Invalid Path parameter
无效的参数。在命令行中没有指定正确的参数、或者有重复、禁止的参数。检查命令输入时的拼写或语法。

下面是一篇相关的博客介绍,转载过来以作参考:

自:http://www.royh.cn/blog/asp/long-filename-of-mappath-fso-stm.html

先说常用的Server.MapPath(路径)函数,如果路径参数过长则会爆一个这样的错误:
Server.MapPath() error 'ASP 0214 : 80004005'
Invalid Path parameter
The Path parameter excedes the maximum length allowed.
经过试验,该函数的参数最长只能到 238

FSO的opentextfile(文件名, 1/2/3, TRUE)的文件名也有类似的限制,不过不是238,而是259。超生就爆错误:

Microsoft VBScript runtime error '800a004c'
Path not found

ADODB.Stream的savetofile(文件名,2 )也一样,文件名最长不能超过259个字符。过长就出错误:

ADODB.Stream error '800a0bbc'
Write to file failed.

这个错误提示很笼统,会误解为权限问题。另外文件名中含非法字符也提示这个错误。估计磁盘空间满、磁盘损坏也是这个提示:)

Server.MapPath的解决方法是分解一下,例如 Server.MapPath(“.”) & “” &路径 接上去,我们的博客程序代码已经这么做了。

不过写文件的这两个组件就没折了,偶现在是在opentextfile和savetofile之前判断一下长度,只能如此绕过。平时同志们的目录别埋太深哦,一级一级累加起来很容易就超过259了。

点赞 (0)

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Captcha Code