Changer le CHMOD via wininet.dll

Le
sebastienk
Bonjour à tous,

J'ai bien réussi à utiliser les différents scripts présents sur
Excelabo ou sur Jacxl (http://jacxl.free.fr/cours_xl/
cours_xl_jac.html#exemples_api_suite) pour envoyer un fichier par FTP.
Mais si j'utilise VBA, c'est pour ne plus avoir à utiliser un client
FTP. Or, je dois aussi modifier les droits d'écriture sur le fichier
et changer le CHMOD à 777.

Avez-vous une idée de la faisabilité de la chose?? Sur le newsgroup,
j'ai bien trouvé un moyen de le faire en PHP, mais si on pouvait
rester en VBA

Merci d'avance pour vos réponse!

Sébastien
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
j
Le #4976761
est-ce que tu sais changer ton chmod par fichier batch ?
si oui, tu peux lancer ta commande par vba, sinon, je sais pas

http://jacxl.free.fr


"sebastienk"

Bonjour à tous,

J'ai bien réussi à utiliser les différents scripts présents sur
Excelabo ou sur Jacxl (http://jacxl.free.fr/cours_xl/
cours_xl_jac.html#exemples_api_suite) pour envoyer un fichier par FTP.
Mais si j'utilise VBA, c'est pour ne plus avoir à utiliser un client
FTP. Or, je dois aussi modifier les droits d'écriture sur le fichier
et changer le CHMOD à 777.

Avez-vous une idée de la faisabilité de la chose?? Sur le newsgroup,
j'ai bien trouvé un moyen de le faire en PHP, mais si on pouvait
rester en VBA...

Merci d'avance pour vos réponse!

Sébastien
Misange
Le #4976691
Bonjour,

Tu dois ue fois pour toutes sur ton serveur changer le chmod.
Heureusement que ceci ne peut pas ^tre fait de l'extérieur en envoyant
un fichier sur un serveur ! la faille de sécurité serait immense.
Je te conseille de te créer en dossier destiné à récupérer ton fichier
php, et de protéger ce dossier avec un .htaccess.
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour à tous,

J'ai bien réussi à utiliser les différents scripts présents sur
Excelabo ou sur Jacxl (http://jacxl.free.fr/cours_xl/
cours_xl_jac.html#exemples_api_suite) pour envoyer un fichier par FTP.
Mais si j'utilise VBA, c'est pour ne plus avoir à utiliser un client
FTP. Or, je dois aussi modifier les droits d'écriture sur le fichier
et changer le CHMOD à 777.

Avez-vous une idée de la faisabilité de la chose?? Sur le newsgroup,
j'ai bien trouvé un moyen de le faire en PHP, mais si on pouvait
rester en VBA...

Merci d'avance pour vos réponse!

Sébastien



sebastienk
Le #4976301
Merci pour vos réponses.

En parcourant le web et les fonctions de Wininet.dll, j'ai trouvé le
moyen de faire tout ça via VBA.
Ci-dessous mon code:

Declare Function InternetConnect Lib "Wininet.DLL" Alias
"InternetConnectA" ( _
ByVal hInternetSession As Long, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Declare Function InternetOpen Lib "Wininet.DLL" Alias
"InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Declare Function FtpSetCurrentDirectory Lib "Wininet.DLL" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean
Declare Function FtpPutFile Lib "Wininet.DLL" Alias "FtpPutFileA" ( _
ByVal hFtpSession As Long, _
ByVal lpszLocalFile As String, _
ByVal lpszRemoteFile As String, _
ByVal dwFlags As Long, _
ByVal dwContext As Long) As Boolean
Declare Function FtpCommand Lib "Wininet.DLL" Alias "FtpCommandA" _
(ByVal hConnect As Long, _
fExpectResponse As Long, _
ByVal dwFlags As Long, _
ByRef lpszCommand As Byte, _
ByVal dwContext As Long, _
ByRef phFtpCommand As Long) As Long

Sub upload_fichier_sur_serveur_FTP()
Dim hResponse As Long
Dim bytCommand() As Byte
DossierDistant = "/votre_dossier/"
Internet_OK = InternetOpen("", 1, "", "", 0)
If Internet_OK Then
FTP_OK = InternetConnect(Internet_OK, "nom_du_serveur", 21,
"user", "pwd", 1, &H8000000, 0)

If FtpSetCurrentDirectory(FTP_OK, DossierDistant) Then
succes = FtpPutFile(FTP_OK, "C:test.txt", "test.csv", &H2, 0)

If succes Then
bytCommand = StrConv(("site chmod 777 " &
DossierDistant & "test.csv" & vbNullChar), vbFromUnicode)
succes2 = FtpCommand(FTP_OK, 1, &H1&, bytCommand(0),
0, hResponse)
if succes2 then
MsgBox ("Le fichier a été transféré et les
droits en écriture modifiés")
else
MsgBox ("Le fichier a été transféré mais les
droits en écriture n'ont pas été modifiés")
end if
else
MsgBox ("Le fichier n'a pu être transféré")
end if

End If
End If

End Sub

En espérant que cela pourra vous être utile...

Cordialement,
Sébastien



On 9 oct, 19:59, Misange
Bonjour,

Tu dois ue fois pour toutes sur ton serveur changer le chmod.
Heureusement que ceci ne peut pas ^tre fait de l'extérieur en envoyant
un fichier sur un serveur ! la faille de sécurité serait immense.
Je te conseille de te créer en dossier destiné à récupérer ton fichier
php, et de protéger ce dossier avec un .htaccess.
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !http://xlwiki. free.fr/wikihttp://www.excelabo.net




Bonjour à tous,

J'ai bien réussi à utiliser les différents scripts présents sur
Excelabo ou sur Jacxl (http://jacxl.free.fr/cours_xl/
cours_xl_jac.html#exemples_api_suite) pour envoyer un fichier par FTP.
Mais si j'utilise VBA, c'est pour ne plus avoir à utiliser un client
FTP. Or, je dois aussi modifier les droits d'écriture sur le fichier
et changer le CHMOD à 777.

Avez-vous une idée de la faisabilité de la chose?? Sur le newsgroup,
j'ai bien trouvé un moyen de le faire en PHP, mais si on pouvait
rester en VBA...

Merci d'avance pour vos réponse!

Sébastien- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



MichDenis
Le #4976111
Bonjour Sebastien,

Pour l'ignare que je suis en ce domaine, il aurait été intéressant
que tu commentes les lignes de ta procédure afin que je comprenne
ce que chacune d'elle fait.

C'est quoi un "CHMOD" ... est-ce que tous les sites internet ont
un "CHMOD" ?

Merci pour ta collaboration.

Salutations.


"sebastienk"
Merci pour vos réponses.

En parcourant le web et les fonctions de Wininet.dll, j'ai trouvé le
moyen de faire tout ça via VBA.
Ci-dessous mon code:

Declare Function InternetConnect Lib "Wininet.DLL" Alias
"InternetConnectA" ( _
ByVal hInternetSession As Long, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Declare Function InternetOpen Lib "Wininet.DLL" Alias
"InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Declare Function FtpSetCurrentDirectory Lib "Wininet.DLL" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean
Declare Function FtpPutFile Lib "Wininet.DLL" Alias "FtpPutFileA" ( _
ByVal hFtpSession As Long, _
ByVal lpszLocalFile As String, _
ByVal lpszRemoteFile As String, _
ByVal dwFlags As Long, _
ByVal dwContext As Long) As Boolean
Declare Function FtpCommand Lib "Wininet.DLL" Alias "FtpCommandA" _
(ByVal hConnect As Long, _
fExpectResponse As Long, _
ByVal dwFlags As Long, _
ByRef lpszCommand As Byte, _
ByVal dwContext As Long, _
ByRef phFtpCommand As Long) As Long

Sub upload_fichier_sur_serveur_FTP()
Dim hResponse As Long
Dim bytCommand() As Byte
DossierDistant = "/votre_dossier/"
Internet_OK = InternetOpen("", 1, "", "", 0)
If Internet_OK Then
FTP_OK = InternetConnect(Internet_OK, "nom_du_serveur", 21,
"user", "pwd", 1, &H8000000, 0)

If FtpSetCurrentDirectory(FTP_OK, DossierDistant) Then
succes = FtpPutFile(FTP_OK, "C:test.txt", "test.csv", &H2, 0)

If succes Then
bytCommand = StrConv(("site chmod 777 " &
DossierDistant & "test.csv" & vbNullChar), vbFromUnicode)
succes2 = FtpCommand(FTP_OK, 1, &H1&, bytCommand(0),
0, hResponse)
if succes2 then
MsgBox ("Le fichier a été transféré et les
droits en écriture modifiés")
else
MsgBox ("Le fichier a été transféré mais les
droits en écriture n'ont pas été modifiés")
end if
else
MsgBox ("Le fichier n'a pu être transféré")
end if

End If
End If

End Sub

En espérant que cela pourra vous être utile...

Cordialement,
Sébastien



On 9 oct, 19:59, Misange
Bonjour,

Tu dois ue fois pour toutes sur ton serveur changer le chmod.
Heureusement que ceci ne peut pas ^tre fait de l'extérieur en envoyant
un fichier sur un serveur ! la faille de sécurité serait immense.
Je te conseille de te créer en dossier destiné à récupérer ton fichier
php, et de protéger ce dossier avec un .htaccess.
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel
!http://xlwiki.free.fr/wikihttp://www.excelabo.net




Bonjour à tous,

J'ai bien réussi à utiliser les différents scripts présents sur
Excelabo ou sur Jacxl (http://jacxl.free.fr/cours_xl/
cours_xl_jac.html#exemples_api_suite) pour envoyer un fichier par FTP.
Mais si j'utilise VBA, c'est pour ne plus avoir à utiliser un client
FTP. Or, je dois aussi modifier les droits d'écriture sur le fichier
et changer le CHMOD à 777.

Avez-vous une idée de la faisabilité de la chose?? Sur le newsgroup,
j'ai bien trouvé un moyen de le faire en PHP, mais si on pouvait
rester en VBA...

Merci d'avance pour vos réponse!

Sébastien- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



sebastienk
Le #4976071
C'est noté pour les commentaires, mais je n'ai pas vraiment le temps
de le faire. Si tu veux plus d'informations sur 90% du script proposé,
je t'invite à consulter le lien indiqué sur mon premier post.

Le CHMOD désigne par une chaîne numérique les droits que tu accordes
sur un fichier en lecture-écriture. En gros, avec un CHMOD à 777, tu
autorises n'importe quelle application à modifier par FTP le-dit
fichier (et à le supprimer).
N'hésite pas à rechercher sur des sites spécialisés qui t'en
apprendront plus que cette courte explication.

Sébastien


On 10 oct, 13:59, "MichDenis"
Bonjour Sebastien,

Pour l'ignare que je suis en ce domaine, il aurait été intéressant
que tu commentes les lignes de ta procédure afin que je comprenne
ce que chacune d'elle fait.

C'est quoi un "CHMOD" ... est-ce que tous les sites internet ont
un "CHMOD" ?

Merci pour ta collaboration.

Salutations.

"sebastienk"
Merci pour vos réponses.

En parcourant le web et les fonctions de Wininet.dll, j'ai trouvé le
moyen de faire tout ça via VBA.
Ci-dessous mon code:

Declare Function InternetConnect Lib "Wininet.DLL" Alias
"InternetConnectA" ( _
ByVal hInternetSession As Long, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Declare Function InternetOpen Lib "Wininet.DLL" Alias
"InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Declare Function FtpSetCurrentDirectory Lib "Wininet.DLL" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean
Declare Function FtpPutFile Lib "Wininet.DLL" Alias "FtpPutFileA" ( _
ByVal hFtpSession As Long, _
ByVal lpszLocalFile As String, _
ByVal lpszRemoteFile As String, _
ByVal dwFlags As Long, _
ByVal dwContext As Long) As Boolean
Declare Function FtpCommand Lib "Wininet.DLL" Alias "FtpCommandA" _
(ByVal hConnect As Long, _
fExpectResponse As Long, _
ByVal dwFlags As Long, _
ByRef lpszCommand As Byte, _
ByVal dwContext As Long, _
ByRef phFtpCommand As Long) As Long

Sub upload_fichier_sur_serveur_FTP()
Dim hResponse As Long
Dim bytCommand() As Byte
DossierDistant = "/votre_dossier/"
Internet_OK = InternetOpen("", 1, "", "", 0)
If Internet_OK Then
FTP_OK = InternetConnect(Internet_OK, "nom_du_serveur", 21,
"user", "pwd", 1, &H8000000, 0)

If FtpSetCurrentDirectory(FTP_OK, DossierDistant) Then
succes = FtpPutFile(FTP_OK, "C:test.txt", "test.csv", &H2, 0)

If succes Then
bytCommand = StrConv(("site chmod 777 " &
DossierDistant & "test.csv" & vbNullChar), vbFromUnicode)
succes2 = FtpCommand(FTP_OK, 1, &H1&, bytCommand(0),
0, hResponse)
if succes2 then
MsgBox ("Le fichier a été transféré et les
droits en écriture modifiés")
else
MsgBox ("Le fichier a été transféré mais les
droits en écriture n'ont pas été modifiés")
end if
else
MsgBox ("Le fichier n'a pu être transféré")
end if

End If
End If

End Sub

En espérant que cela pourra vous être utile...

Cordialement,
Sébastien

On 9 oct, 19:59, Misange


Bonjour,

Tu dois ue fois pour toutes sur ton serveur changer le chmod.
Heureusement que ceci ne peut pas ^tre fait de l'extérieur en envoyant
un fichier sur un serveur ! la faille de sécurité serait immense.
Je te conseille de te créer en dossier destiné à récupérer to n fichier
php, et de protéger ce dossier avec un .htaccess.
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel
!http://xlwiki.free.fr/wikihttp://www.excelabo.net



Bonjour à tous,

J'ai bien réussi à utiliser les différents scripts présents s ur
Excelabo ou sur Jacxl (http://jacxl.free.fr/cours_xl/
cours_xl_jac.html#exemples_api_suite) pour envoyer un fichier par FTP.
Mais si j'utilise VBA, c'est pour ne plus avoir à utiliser un client
FTP. Or, je dois aussi modifier les droits d'écriture sur le fichier
et changer le CHMOD à 777.

Avez-vous une idée de la faisabilité de la chose?? Sur le newsgro up,
j'ai bien trouvé un moyen de le faire en PHP, mais si on pouvait
rester en VBA...

Merci d'avance pour vos réponse!

Sébastien- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -




Publicité
Poster une réponse
Anonyme