【发布时间】:2020-09-26 03:43:20
【问题描述】:
我正在开发一个 ASP 经典网站,客户报告该网站突然出现一个问题,该问题与之前仅列出“图像”文件类型的工作功能有关。阅读代码后,我发现列出文件夹中文件的循环使用 InStr() 函数按类型识别文件,应该是“图像”。但是,我发现操作系统中一定发生了一些变化,因为类型不再是“图像”,而是“JPG”或“PNG”等。这极大地改变了代码的工作方式。以下是代码片段:
Set oFSO = Server.CreateObject("Scripting.FileSystemObject")
Set oFolder = oFSO.GetFolder(Server.MapPath(sCurrentDirectoryPath))
Set oSubFolder = oFolder.Files
iFileCount = 0
For Each oFileName in oSubFolder
If InStr(1, LCase(oFileName.Type),"image") > 0 Then
iFileCount = iFileCount + 1
End If
Next
因为 InStr() 函数正在尝试查找“图像”文件类型,所以没有文件被计数,并且该函数返回零个找到的文件。调试时发现oFileName.Type返回的值如下:
这是文件类型:JPG文件 这是文件类型:JPG文件 这是文件类型:文本文档 这是文件类型:数据库文件
文件夹中的文件是两个“whatever.jpg”文件、一个“whatever.txt”文件和一个“thumbs.db”文件。因此,似乎操作系统(Windows Server 2019)可能已更改为报告“图像”文件的通用性降低,现在报告“JPG文件”或“PNG文件”等。这当然会破坏此代码!大家对我如何修改此代码以准确报告存在多少图像文件有什么建议吗?
【问题讨论】:
标签: asp-classic filesystemobject