症状:
后台删除某条记录时该记录所带附件文件名中如果有%号时,该条记录及所带附件文件均无法删除,500报错Server.MapPath() ���� 'ASP 0173 : 80004005',同样如果附件文件名中带+号则前台打不开此文件报错404,该条记录能删除但提示找不到附件文件,而实际该文件是存在于服务器上的。
解决办法:
在ASP上传文件时删除文件名中的“+”号和“%”号字符,可以在处理上传文件的部分添加二行代码来替换文件名中的“+”号和“%”号。
以下是代码片段:
' 处理上传文件
for each formName in upload.objFile
set file = upload.file(formName)
if file.FileSize > 0 then
' 删除文件名中的%号和+号
dim safeFileName
safeFileName = Replace(file.FileName, "%", "")
safeFileName = Replace(safeFileName, "+", "")
file1 = newfilename & "" & safeFileName
filenamelist = formPath & newfilename & "" & safeFileName
file.SaveAs formPath & newfilename & "" & safeFileName
end if
set file = nothing
next
```
解释:
safeFileName = Replace(file.FileName, "%", ""): 这一行代码删除了文件名中的%号。safeFileName = Replace(safeFileName, "+", ""): 这一行代码删除了文件名中的+号。
这两行代码会在保存文件之前删除文件名中的%号和+号。
如果你还需要删除其他特殊字符,可以在Replace函数中添加相应的替换逻辑。
最终效果:
上传时选中的本机文件名:test+file%name.jpg
上传成功后服务器上的实际文件名:testfilename.jpg
