Get PostData
From CometWiki
(Difference between revisions)
(Created page with "===XAP Control: Get PostData=== When issued to LUN 0 in an XAP program, the "Get PostData" control gets the post data that was passed from the browser. Syntax: output$ = Contr...") |
(full explanation of ability to retrieve all of post data.) |
||
Line 1: | Line 1: | ||
===XAP Control: Get PostData=== | ===XAP Control: Get PostData=== | ||
- | When issued to LUN 0 in an XAP program, the "Get PostData" control gets the post data that was passed from the browser. | + | When issued to LUN 0 in an XAP program, the "Get PostData" control gets the post data that was passed from the browser. PostData may be very large if it contains one or more files selected. |
Syntax: | Syntax: | ||
Line 9: | Line 9: | ||
String containing the post data from the browser | String containing the post data from the browser | ||
- | Example | + | Example -- Transferring one or more files from browser to xap: |
- | + | ||
+ | Html page that sets up the transfer: | ||
+ | |||
+ | <pre> | ||
+ | <form action="http://signature.net:8080/xap/p1" | ||
+ | enctype="multipart/form-data" method="post"> | ||
+ | <p> | ||
+ | Type some text (if you like):<br> | ||
+ | <input type="text" name="textline" size="30"> | ||
+ | </p> | ||
+ | <p> | ||
+ | Please specify a file, or a set of files:<br> | ||
+ | <br><input type="file" name="file1" size="40"> | ||
+ | <br><input type="file" name="file2" size="40"> | ||
+ | <br><input type="file" name="file3" size="40"> | ||
+ | </p> | ||
+ | <div> | ||
+ | <input type="submit" value="Send"> | ||
+ | </div> | ||
+ | </form> | ||
+ | </pre> | ||
+ | |||
+ | Program that receives the result: | ||
+ | |||
+ | <pre> | ||
+ | |||
+ | !//IB// Obj(p1,xap) | ||
+ | |||
+ | length dynamic & local postdata$ separator$ line$ section$ body$ | ||
+ | length 16.0 & local i section seplen | ||
+ | clear | ||
+ | |||
+ | postdata$ = Control( 0, "Get PostData" ) | ||
+ | |||
+ | Print '<p>Program P1 Active' | ||
+ | i = len(postdata$) | ||
+ | print '<p>length of postdata is ';i | ||
+ | seplen = pos('@0d@',postdata$)-1 | ||
+ | print '<p>separator length ';seplen | ||
+ | separator$ = sub(postdata$,1,seplen) | ||
+ | print '<br>separator=';separator$ | ||
+ | postdata$ = sub(postdata$,seplen+2,len(postdata$)) | ||
+ | do | ||
+ | !separate each section | ||
+ | i = pos(separator$,postdata$) | ||
+ | section$ = sub(postdata$,1,i-1) | ||
+ | |||
+ | if i = 0 goto done | ||
+ | section = section + 1 | ||
+ | print '<p>Section ';section | ||
+ | postdata$ = sub(postdata$,i+seplen+1,len(postdata$)) | ||
+ | |||
+ | ! separate each line | ||
+ | do | ||
+ | i = pos('@0d@',section$) | ||
+ | if i = 1 goto body | ||
+ | line$ = sub(section$,1,i) | ||
+ | print '<br>line=';line$ | ||
+ | section$ = sub(section$,i+2,len(section$)) | ||
+ | loop | ||
+ | body: | ||
+ | body$ = sub(section$,3,len(section$)-4) | ||
+ | i = len(body$) | ||
+ | print '<br>body len = ';i | ||
+ | ! put the body in a file | ||
+ | erase 'body.txt', dir='tmp' noexcp | ||
+ | create 'body.txt', dir='tmp' noexcp | ||
+ | close(10) & open(10)'body.txt', dir='tmp' noexcp | ||
+ | printfile(10)body$ | ||
+ | close(10) | ||
+ | |||
+ | loop | ||
+ | |||
+ | !*** Program Termination | ||
+ | ! | ||
+ | done: | ||
+ | close | ||
+ | stop | ||
+ | |||
+ | </pre> |
Latest revision as of 18:13, 7 January 2013
XAP Control: Get PostData
When issued to LUN 0 in an XAP program, the "Get PostData" control gets the post data that was passed from the browser. PostData may be very large if it contains one or more files selected.
Syntax:
output$ = Control( 0, "Get PostData" )
Return Value:
String containing the post data from the browser
Example -- Transferring one or more files from browser to xap:
Html page that sets up the transfer:
<form action="http://signature.net:8080/xap/p1" enctype="multipart/form-data" method="post"> <p> Type some text (if you like):<br> <input type="text" name="textline" size="30"> </p> <p> Please specify a file, or a set of files:<br> <br><input type="file" name="file1" size="40"> <br><input type="file" name="file2" size="40"> <br><input type="file" name="file3" size="40"> </p> <div> <input type="submit" value="Send"> </div> </form>
Program that receives the result:
!//IB// Obj(p1,xap) length dynamic & local postdata$ separator$ line$ section$ body$ length 16.0 & local i section seplen clear postdata$ = Control( 0, "Get PostData" ) Print '<p>Program P1 Active' i = len(postdata$) print '<p>length of postdata is ';i seplen = pos('@0d@',postdata$)-1 print '<p>separator length ';seplen separator$ = sub(postdata$,1,seplen) print '<br>separator=';separator$ postdata$ = sub(postdata$,seplen+2,len(postdata$)) do !separate each section i = pos(separator$,postdata$) section$ = sub(postdata$,1,i-1) if i = 0 goto done section = section + 1 print '<p>Section ';section postdata$ = sub(postdata$,i+seplen+1,len(postdata$)) ! separate each line do i = pos('@0d@',section$) if i = 1 goto body line$ = sub(section$,1,i) print '<br>line=';line$ section$ = sub(section$,i+2,len(section$)) loop body: body$ = sub(section$,3,len(section$)-4) i = len(body$) print '<br>body len = ';i ! put the body in a file erase 'body.txt', dir='tmp' noexcp create 'body.txt', dir='tmp' noexcp close(10) & open(10)'body.txt', dir='tmp' noexcp printfile(10)body$ close(10) loop !*** Program Termination ! done: close stop