2009-05-22 7 views
3

Ok, ça fait longtemps que j'ai travaillé avec ASP classique, donc je suis un peu rouillé. Voici ma question.Impossible d'écrire le fichier en ASP classique

Je suis en train d'écrire un fichier dans le système de fichiers en utilisant OFS. Le code ci-dessous est très simple. Cependant, le fichier n'apparaît pas et aucune erreur n'apparaît. Je sais qu'il exécute le code car je peux ajouter response.writes avant et après cet extrait et ils apparaissent tous les deux dans la sortie. Cependant, aucun fichier n'est créé, aucune erreur n'est générée. Je l'ai même changé donc c'est un chemin bidon pour forcer une erreur. Pas de dé. J'ai ajouté tout le monde à avoir lu et écrit sur les permissions du répertoire. Toujours le même.

Des idées?

Voici mon code:

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 

Répondre

4

Essayez ceci:

<% 

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 

%> 

J'ai essayé sur place, après avoir défini les autorisations sur mon répertoire et cela a fonctionné.

Vous pouvez obtenir la source originale d'ici: http://www.freevbcode.com/ShowCode.Asp?ID=89

+0

La seule chose que je ferais différemment est de vérifier si le fichier existe d'abord. Sauf si iMode de 2 est de créer le fichier ... été un moment et ne me souviens pas de tous les modes :) –

+0

Le code est très bien, mais j'ai eu le même résultat. Pas de fichier, pas d'erreur. Rien d'autre à essayer ou à vérifier? –

+0

Essayez de créer un répertoire sur votre disque et définissez les autorisations à tout le monde avec un accès en écriture et voir si cela fonctionne. Si c'est le cas, cela pourrait être un problème d'autorisation. La seule chose avec cela, c'est que s'il s'agit d'un problème d'autorisation, votre code devrait signaler que vous n'avez pas accès. Hmm ... Penser – CodeLikeBeaker

6

La seule raison possible que le code ne produirait pas un message d'erreur, est que vous avez dans votre page:

On Error Resume Next 

C'est mauvais, pour la raison que vous venez de voir. Il ignore simplement les messages d'erreur et ne sait pas pourquoi cela ne fonctionne pas comme prévu.

(Il ne doit être utilisé pour des parties isolées du code où vous anticipez une erreur, et fait vérifier une condition d'erreur après chaque opération.)

Retirez que de votre page, et le message d'erreur que vous probablement obtenir est que les paramètres ne sont pas valides pour l'appel sur cette ligne:

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

Vous avez oublié le second paramètre, qui est le mode d'E/S. Vous devez utiliser la valeur 1 pour l'écriture:

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

Vous pouvez également utiliser la méthode CreateTextFile à la place:

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

J'aimerais pouvoir vérifier 2 bonnes réponses. Nous avons juste trouvé que le code était un mauvais "On Error Resume Next". Retiré cela. Fonctionne très bien. Merci pour l'aide!!! –