Não é possível gravar arquivo em asp clássico
-
23-08-2019 - |
Pergunta
Ok, ele tem sido um tempo desde que eu já trabalhei com asp clássico por isso estou um pouco enferrujado. Aqui está a minha pergunta.
Eu estou tentando escrever um arquivo para o sistema de arquivos usando FSO. O código a seguir é muito simples. No entanto, o arquivo não está aparecendo e sem erros estão aparecendo. Eu sei que é executar o código, porque eu posso adicionar response.writes antes e depois deste trecho e ambos aparecem na saída. No entanto, nenhum arquivo é criado, nenhum erro é lançado. Eu mesmo mudei por isso é um caminho falso para forçar um erro. Não dados. Eu adicionei todos ter lido e escrever sobre as permissões do diretório. Ainda o mesmo.
Idéias?
Aqui está o meu código:
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
Solução
Tente isto:
<%
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
%>
Eu tentei isso localmente, depois de definir as permissões em meu diretório e funcionou.
Você pode obter a fonte original a partir daqui: http://www.freevbcode.com/ShowCode.Asp?ID=89
Outras dicas
A única razão possível que o código não iria produzir uma mensagem de erro, é que você tem isso em sua página:
On Error Resume Next
Isso é ruim, pela razão de que você acabou de ver. É apenas silenciosamente ignora quaisquer mensagens de erro, e deixa-lo sem uma pista de por que ele não está funcionando como esperado.
(Deve ser usado apenas para peças isoladas do código onde você antecipar um erro, e realmente verificar se há uma condição de erro após cada operação.)
Remova que a partir de sua página, ea mensagem de erro que você provavelmente terá é que os parâmetros são inválidos para a chamada nesta linha:
Set objTextStream = objFSO.OpenTextFile("d:\test.txt", True)
Você esqueceu o segundo parâmetro, que é o modo I / O. Você deve usar o valor 1 para escrita:
Set objTextStream = objFSO.OpenTextFile("d:\test.txt", 1, True)
Como alternativa, você pode usar o método CreateTextFile
vez:
Set objTextStream = objFSO.CreateTextFile("d:\test.txt", True)