【问题标题】:Can't write file in classic asp无法在经典asp中写入文件
【发布时间】:2010-10-28 05:52:47
【问题描述】:

好吧,我已经有一段时间没有使用经典的 asp 了,所以我有点生疏了。这是我的问题。

我正在尝试使用 FSO 将文件写入文件系统。下面的代码非常简单。但是,该文件没有出现,也没有出现错误。我知道它正在运行代码,因为我可以在这个 sn-p 之前和之后添加 response.writes 并且它们都出现在输出中。但是,没有创建文件,也没有引发错误。我什至改变了它,所以这是一个强制错误的虚假路径。没有骰子。我添加了每个人对目录的读写权限。还是一样。

想法?

这是我的代码:

Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

'Open the text file
Dim objTextStream
Set objTextStream = objFSO.OpenTextFile("d:\test.txt", True)

'Display the contents of the text file
objTextStream.WriteLine "howdy"

'Close the file and clean up
objTextStream.Close
Set objTextStream = Nothing
Set objFSO = Nothing

【问题讨论】:

    标签: asp-classic filesystemobject


    【解决方案1】:

    代码不会产生错误消息的唯一可能原因是您的页面中有这个:

    On Error Resume Next
    

    这很糟糕,因为你刚才看到的原因。它只是默默地忽略任何错误消息,让您不知道为什么它没有按预期工作。

    (它应该只用于代码的孤立部分,您预计会出现错误,并在每次操作后实际检查错误情况。)

    从您的页面中删除它,您可能收到的错误消息是参数对于此行的调用无效:

    Set objTextStream = objFSO.OpenTextFile("d:\test.txt", True)
    

    您忘记了第二个参数,即 I/O 模式。您应该使用值 1 进行写入:

    Set objTextStream = objFSO.OpenTextFile("d:\test.txt", 1, True)
    

    或者,您可以改用CreateTextFile 方法:

    Set objTextStream = objFSO.CreateTextFile("d:\test.txt", True)
    

    【讨论】:

    • 我希望我能检查 2 个正确答案。我们刚刚发现代码中的这种方式是一个邪恶的“On Error Resume Next”。删除了那个。效果很好。感谢您的帮助!!!
    【解决方案2】:

    试试这个:

    <%
    
    if Append = true then
       iMode = 8
    else 
       iMode = 2
    end if
    set oFs = server.createobject("Scripting.FileSystemObject")
    set oTextFile = oFs.OpenTextFile("C:\wwwroot\Test.txt", iMode, True)
    oTextFile.Write "Test Content"
    oTextFile.Close
    set oTextFile = nothing
    set oFS = nothing
    
    %>
    

    我在本地尝试了这个,在我的目录上设置了权限并且它起作用了。

    您可以从这里获取原始来源: http://www.freevbcode.com/ShowCode.Asp?ID=89

    【讨论】:

    • 唯一不同的是我首先检查文件是否存在。除非 iMode 为 2 是创建文件...已经有一段时间了,不记得所有的模式 :)
    • 代码看起来不错,但我得到了相同的结果。没有文件,没有错误。还有什么要尝试或检查的吗?
    • 尝试在您的驱动器上创建一个目录并将权限设置为具有写入权限的每个人,看看是否可行。如果是这样,则可能是权限问题。唯一的问题是,如果是权限问题,您的代码应该报告您无权访问。嗯……思考
    • 创建了一个目录并授予每个人完全访问权限。结果相同。很奇怪。
    • 附加说明:您是否在尝试使用空白的 asp 页面?没有包含?
    猜你喜欢
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多