Actions
Requete POST and base64¶
How to send datas using base64 encoding by a POST request ?
- Base64-encoded data takes about 33% more space than the original data.
- This encoding is designed to make binary data survive transport through transport layers that are not 8-bit clean, such as mail bodies.
You should know how to send a POST request : Request_POST before continue
In Scol, to encode to base64, use _base64_encode_ function.
base64_encode : fun [S] S
The first step is the encoding. The second step should be the conversion from any character to web character : _strtoweb_
strtoweb : fun [S] S
This example sends an image to a server (via a PHP script).
fun CBreceive (inet, u, data, err)= if err == 0 then ( _fooS strcat ">>>>>>>CBreceive current>>>>>>> " data; let u -> [s] in mutate u <- [strcat s data]; 0 ) else if err == 1 then ( let u -> [s] in _fooS strcat ">>>>>>>CBreceive end>>>>>>> " s; _closemachine ) else ( _fooS strcat ">>>>>>>CBreceive err>>>>>>> " itoa err; 0 );; fun main ()= _showconsole; let _getpack _checkpack "examples/image.jpg" -> file in // get the file content let base64_encode file -> file64 in // encode to base64 let strtoweb file64 -> file64web in // convert to web character let "http://domin.tld/post.php" -> url in let strcat "image=" file64web -> data in INETGetURLex2 _channel "POST" url "content-type: application/x-www-form-urlencoded" data 0 @CBreceive [""]; 0;;
- With the SYSPACK API, you can use base64encodePweb :
fun CBreceive (inet, u, data, err)= // the same thing than above 0;; fun main ()= _showconsole; let _getpack _checkpack "examples/image.jpg" -> file in // get the file content let base64encodePweb file -> file64web in // encode to base64 and convert it let "http://domin.tld/post.php" -> url in let strcat "image=" file64web -> data in INETGetURLex2 _channel "POST" url "content-type: application/x-www-form-urlencoded" data 0 @CBreceive [""]; 0;;
base64encodePweb seems slightly faster than base64_encode and strtoweb. base64encodePweb is based from the PHP source code.
Author : iri
Date : december 2011
Return to Examples
Updated by iri almost 13 years ago ยท 2 revisions