作为经典ASP项目的一部分,用户应该能够下载一个文件 - 从zip存档动态提取并通过Response.BinaryWrite()发送 - 只需调用“document.asp?id = [some id这里]”。
提取和发送不是问题,但我需要在下载完成后删除提取的文件。我之前从未做过任何ASP或VBA,我猜这就是我卡在这里的原因。
我尝试使用FileSystemObject.DeleteFile()在Response.WriteBinary()之后立即删除该文件,但这会导致客户端出现404错误。
我怎样才能等到下载完成后再做其他操作?
编辑:这就是我的代码的样子:
'Unzip a specified file from an archive and put it's path in *document*
set stream = Server.CreateObject("ADODB.Stream")
stream.Open
stream.Type = 1 ' binary
stream.LoadFromFile(document)
Response.BinaryWrite(stream.Read)
'Here I want to delete the *document*
答案 0 :(得分:1)
我怀疑你正在调用DeleteFile方法,你正在尝试删除的文件当前被别的东西锁定了,问题是什么?
尝试包括: -
stream.Close()
在BinaryWrite之后。还要确保您已经使用了用于提取文件的组件。如果组件没有提供任何明显的“近距离”方法,他们会尝试将Nothing
分配给引用它们的变量。
答案 1 :(得分:0)
是不可能将文件流式传输到内存中,然后二进制将流写入浏览器,这样就不会在服务器上创建文件,也不需要删除它。
答案 2 :(得分:0)
我找到了一个解决方案:提取的文件保存在一个特殊目录中,每次用户运行document.asp时,它会检查此目录中是否有超过一小时的文件并删除它们。
我认为这是最简单的管理方式,但我更倾向于在下载后删除文档的解决方案。