Page 1 sur 1
[R] HTML : Upload de fichiers via une requête POST
Posté : ven. 08 août 2008 19:47
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

.
Re: [..] HTML : Upload de fichiers via une requête POST
Posté : ven. 08 août 2008 22:43
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.

Re: [..] HTML : Upload de fichiers via une requête POST
Posté : ven. 08 août 2008 23:50
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 !!