Voilà, pour automatiser certaines tâches dans un soft, j’appele des pages web specifiques en leur envoyant des données POST qu’elles traitent ensuite (pour ceux qui font du php, j’appele la page en ‹ placant › du contenu dans la variable $_POST, pour faire gros et approximatif).
Maintenant, j’aimerai améliorer ce système, en évitant une étape de plus de à l’utilisateur, en me chargeant de l’upload d’un fichier de donnée jusque là chargé manuellement par une page web.
Et je suis incapable de trouver comment envoyer les fichiers comme le fait une page web dans les données POST …
le code que j’utilise jusque là est basé sur cet exemple (oui, c’est du delphi, mais quel que soit le langage ça reveint au même, et le niveau du code est assez faible ) :
[code]var
strData: string;
PostData: OleVariant;
Headers: OleVariant;
i: Integer;
begin
{1. you must create a string with parameter names and values
Result string must be in the next format:
Param1=Value1&Param2=Value2&Param3=Value3…}
strData := ‹ Param1Name= › + HTTPEncode(Param1Value) + ‹ & › +
‹ Param2Name= › + HttpEncode(Param2Value) + …;
{2. you must convert a string into variant array of bytes and
every character from string is a value in array}
PostData := VarArrayCreate([0, Length(strData) - 1], varByte);
{ copy the ordinal value of the character into the PostData array}
for i := 1 to Length(strData) do
PostData[i-1] := Ord(strData[i]);
{3. prepare headers which will be sent to remote web-server}
Headers := ‹ Content-Type: application/x-www-form-urlencoded › + #10#13;
{4. you must navigate to the URL with your script and send as parameters
your array with POST-data and headers}
//parametre : url, flags, frame cible, données POST, headers
yourWebBrowserComponent.Navigate(‹ http://www.yourdomain.com/your_post_script.asp ›, EmptyParam, EmptyParam, PostData, Headers);
end;[/code]
Pour envoyer un fichier, déjà je me suis dit rapport à mon expérience avec PHP qu’il fallait changer le header pour ‹ Content-Type: multipart/form-data ›.
Erreur ! Les données POST ne sont plus envoyées…
De plus, ça ne me dit pas où et comment envoyer ce fichu fichier.
Une autre solution beaucoup moins élégante serait de le lire et de l’envoyer en tant que variable dans POST, mais ça me semble un peu lourdingue quand même, et il doit surement avoir une limite (les fichiers en question peuvent monter a 200 ko …)
Du coup je bloque et je demande votre aide …
Si vous savez faire ça, quel que soit le langage et que vous avez un bout de code uqi marche, ou que vous pouvez m’aider à trouver comment fraire, je suis preneur.
Merci
PS : je n’ai pas mis de tag pour la simple raison que mon code n’est pas spécifique delphi, et que je ne vois pas quoi lui mettre …