我正在尝试使用unzip / zip类。我需要在上传后解压缩zip文件。我修改了“sleep”函数来检查每个intSeconds值的“controller”函数,并添加“controller”函数来检查目标文件夹上的文件计数。您可以在下面看到代码部分。
zip文件已成功解压缩此功能,但页面进度永无止境。我需要在使用此功能后重新启动iis。
<%
Set objShell = CreateObject("Shell.Application")
Set objFso = CreateObject("Scripting.FileSystemObject")
Function ExtractAll(strZipFile, strFolder)
If Not objFso.FolderExists(strFolder) Then objFso.CreateFolder(strFolder)
intCount = objShell.NameSpace(strFolder).Items.Count
Set colItems = objShell.NameSpace(strZipFile).Items
objShell.NameSpace(strFolder).CopyHere colItems, 8
Sleep 5000,strFolder,intCount + colItems.Count
End Function
function controller(path,filesCountMust)
dim stat:stat=False
set fold = objFso.getFolder(path)
set files = fold.files
if filesCountMust=files.count then
stat=True
end if
set files = nothing
set fold = nothing
controller=stat
end function
Sub Sleep(intSeconds,path,filesCountMust)
dblSeconds = intSeconds / 1000
If dblSeconds < 1 Then dblSeconds = 1
dteStart = Now()
dteEnd = DateAdd("s", dblSeconds, dteStart)
do While dteEnd>=Now()
if dteEnd=Now() then
if controller(path,filesCountMust)=true then
exit do
else
Sleep intSeconds,path,filesCountMust
end if
end if
loop
End Sub
Set objShell = Nothing
Set objFso = Nothing
%GT;
答案 0 :(得分:1)
这一行是问题
if dteEnd=Now() then
只有当dteEnd 完全与Now()完全相同(到毫秒)时它才能进入控制器部分并向出口前进,它不会进入一个递归循环(回到睡眠函数)
请改为尝试:
do While dteEnd>=Now()
if dteEnd>=Now() then
if controller(path,filesCountMust)=true then
exit do
else
Sleep intSeconds,path,filesCountMust
end if
end if
loop
答案 1 :(得分:1)
我没有尝试过,但考虑到我在相同的搜索结果中发现了这个Stack Overflow问题和github解决方案。我认为这可能是解决问题的好方法。