[R] HTML : Upload de fichiers via une requête POST

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
big_ben3333
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 10 sept. 2007 18:32
Localisation : GOLBEY
Status : Hors ligne

[R] HTML : Upload de fichiers via une requête POST

#1

Message par big_ben3333 »

Salut,

Je cherche à envoyer un fichier à une page web via un script.

Je sais comment faire une requête POST classique via les sockets, mais par contre je ne sais pas comment y ajouter un fichier et surtout pour l'encoder convenablement pour ne pas qu'il ne perturbe la requête.

Si vous avez une lib qui fait ca, je suis prenneur.

Merci à vous tous et principalement à toi Tlem qui t'occupes du forum comme un chef ;).
Modifié en dernier par Tlem le ven. 08 août 2008 23:55, modifié 2 fois.
Raison : Ajout de la balise [..] dans le titre
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] HTML : Upload de fichiers via une requête POST

#2

Message par Tlem »

big_ben3333 a écrit :Merci à vous tous et principalement à toi Tlem qui t'occupes du forum comme un chef ;).
Merci.

Je n'ai malheureusement pas la réponse à votre question.
Comme je part demain matin pour 8 jours à l'étranger, je laisse un autre modérateur ou utilisateur faire des recherches et répondre à votre question. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
big_ben3333
Niveau 1
Niveau 1
Messages : 8
Enregistré le : lun. 10 sept. 2007 18:32
Localisation : GOLBEY
Status : Hors ligne

Re: [..] HTML : Upload de fichiers via une requête POST

#3

Message par big_ben3333 »

C'est bon !

J'ai trouvé en sniffant simplement ce qui passait et en faisant un tour sur la RFC 1867.

Voici une fonction un peu bourrin qui ne prend qu'un fichier en compte, mais ca peux bien dépanner :

Code : Tout sélectionner


Func HTTPFILE($site, $page, $fileContent, $mimetype, $varName="fichier", $filename="fichier")
    TCPStartup()
    Local Const $IP = TCPNameToIP($site)
    Local Const $SOCKET = TCPConnect($IP, 80)
   
    If $fileContent <> -1 Then
        ;~ Devrait être généré aléatoirement
        $bundary = '17992491914241'
        $fileContent = '-----------------------------' & $bundary & @CRLF & 'Content-Disposition: form-data; name="' & $varName & '"; filename="' & $filename & '"' & @CRLF & 'Content-Type: ' & $mimetype  & @CRLF & @CRLF & $fileContent & @CRLF & "-----------------------------' & $bundary & '--" & @CRLF
        
        TCPSend($SOCKET, "POST " & $page & " HTTP/1.0" & @CRLF & _
                        "Host: " & $site & @CRLF & _
                        "Content-Type: multipart/form-data; boundary=---------------------------" & $bundary & @CRLF & _
                        "Content-Length: " & StringLen($fileContent) & @CRLF & _
                        @CRLF & _
                        $fileContent)
    Else
        TCPSend($SOCKET, "GET " & $page & " HTTP/1.0" & @CRLF & _
                        "HOST: " & $site & @CRLF & @CRLF)
    EndIf
   
    Local $recv
    Do
        $recv &= TCPRecv($SOCKET, 1024)
    Until @error
    TCPShutdown()
    Return $recv
    
EndFunc

 
Et pi un truc comme ca pour l'appeler (exemple pour un jpg) :

Code : Tout sélectionner



$file = FileOpen($img_file, 0)


If $file <> -1 Then
    $content = FileRead($file)
    MsgBox(64, "", HTTPFILE("www.mon-site.net", "/photos.php?mode=add", $content, "image/jpeg", "fichier", "toto.jpg"))
EndIf
 

Allez, à la prochaine galère AutoItienne !!
Répondre