内容摘要:最近逛论坛经常看到有朋友问上传文件怎么重命名,怎么以当前日期来重命名上传文件。现在我就介绍一下重命名的方法,希望对大家有所帮助。
本文这里不讨论上传文件的方法,如果大家感兴趣可以搜索一下:无组件上传。
首先获取文件的扩展名:因为文件名都是以*.*的格式表示的,我们只要获取最后一个.之后的字符串,这个字符串就是文件的扩展名了。而普通网站上允许的上传文件一般都是图片jpg,png,gif,bmp,压缩文件rar,zip,flash文件:swf,flv。文档文件:doc,txt,pdf等。他们的扩展名一般都只有3个字符。所以我们一般就检测最后3个字符就可以了:
filename=上传文件名
fileext=lcase(right(ffilename,3))
先用right()函数来获取文件名的右3个字符,由于上传的文件名可能大写,也可能小写,所以我们要考虑这种情况。这里用了lcase函数来把文件名转换为小写。当然如果你想转换为大写可以使用Ucase。fileext就保存了上传文件的扩展名。
获取了文件的扩展名了,接下来你可以对文件类型进行判断了,过滤掉非法文件名。
allext="jpg,png,gif,rar,doc,bmp"
把允许上传的文件名保存到allext。接下来使用instr函数来判断上传的文件是否合法。
if instr(allext,fileExt)=0 then
response.write "只能上传"&allext&"格式的图片! <a href=‘http://www.aspxhome.com’>返回首页</a> "
response.end
end if
instr的用法如果你不是很了解,建议您下载一个vbscript参考手册。
下面来重命名上传文件名,重命名的方法很多,有的使用日期+时间,有的使用文件名+时间,有的使用随机数+文件名。当然各有好处。这里介绍以日期来重命名文件的方法:
datestr=Now()
获取当前服务器时间,形如:2007-8-24 10:11:58
我们要把它变成:2007824101158这样的。当然我们就要想办法去掉多余的符号了,这里可以使用replace来替换掉我们不要的符号:
datestr=replace(datestr," ", "") ’去掉空格
datestr=replace(datestr,"-", "")’去掉-
datestr=replace(datestr,":", "")’去掉:
这样datestr的值就是2007824101158了,但是为了不让文件名重复,这样还不够,你不能保证在这一秒钟没有人在上传文件,所以我们还要加个随机的字符串,呵呵安全第一。
产生随机字符串的方法很多,可以看这里8个asp生成随机字符的函数 ,这里只要最简单的随机数字就可以了:
randomize
ranNum=int(90*rnd)+10
ranNum就保存了一个随机的数字了,这里的参数你可以随便设置,当然不要设置太小。
下面和datestr合并:
datestr=datestr&ranNum
在加上文件的扩展名就可以了
datestr=datestr&"."&fileext
这样datestr就包含了当前时间+随机数字+文件名了。接下来是上传的其它操作了...
转载请注明出处:中国asp之家 http://www.aspxhome.com 作者:天空诚
更多的asp上传文件自动重命名方法请到论坛查看: http://BBS.TC711.COM
【 双击滚屏 】 【 评论 】 【 收藏 】 【 打印 】 【 关闭 】
来源:
互联网
日期:2007-10-29