Get PostData
From CometWiki
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