Не могу написать файл в классическом ASP - PullRequest
3 голосов
/ 22 мая 2009

Хорошо, я давно работал с классическим жерехом, так что я немного заржавел. Вот мой вопрос.

Я пытаюсь записать файл в файловую систему, используя FSO. Код ниже очень прост. Тем не менее, файл не появляется, и никаких ошибок не появляется. Я знаю, что он выполняет код, потому что я могу добавить response.writes до и после этого фрагмента, и они оба появляются в выводе. Тем не менее, файл не создается, не выдается ошибка. Я даже изменил это, так что это фиктивный путь, чтобы вызвать ошибку. Нет кости. Я добавил всех, чтобы читать и писать в каталог разрешений. Все тот же.

Идеи? * * 1005

Вот мой код:

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

Ответы [ 2 ]

6 голосов
/ 22 мая 2009

Единственная возможная причина того, что код не выдаст сообщение об ошибке, это то, что у вас есть это на вашей странице:

On Error Resume Next

Это плохо, по той причине, которую вы только что видели. Он просто тихо игнорирует любые сообщения об ошибках и оставляет вас без понятия, почему он работает не так, как ожидалось.

(Он должен использоваться только для изолированных частей кода, где вы ожидаете ошибку, и фактически проверять состояние ошибки после каждой операции.)

Удалите это со своей страницы, и вы, вероятно, получите сообщение об ошибке, что параметры недопустимы для вызова в этой строке:

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

Вы забыли второй параметр, который является режимом ввода-вывода. Вы должны использовать значение 1 для записи:

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

В качестве альтернативы вы можете использовать метод CreateTextFile вместо:

Set objTextStream = objFSO.CreateTextFile("d:\test.txt", True)
4 голосов
/ 22 мая 2009

Попробуйте это:

<%

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

...