On 25 Apr 2008, at 21:18, jbv wrote:
Hi guys,
Has anyone already tried to parse data from a multipart/form-data html
form
(that contains a type=file element) with Rev cgi ?
I've done it successfully in the past with ascii data, but now I'm
trying to post
jpeg data along with other parameters (height & with of the pic,
session
#...)
in the same form, and obviously the jpeg binary data get corrupted in
the process...
I've done this before with jpeg files uploaded as binary data. I can't
find the script I used, but I think the handler below is what I used
to parse the form data. It's based on a libCGI script that Jacqueline
Gay used to distribute. It will handle standard and multipart forms.
If you need to find out how the data was encoded (e.g. whether base64
or binary) then I think you'll need to look for a "Content-transfer-
encoding:" header somewhere below the boundary for the file part.
Cheers
Dave
##########################################
//assumes sPostdata already contains the entire posted data
// watch for wrapping in the email
local sCGIData, sPostdata
on parsePostData
if sPostdata is empty then exit parsePostData
if matchText($CONTENT_TYPE,"multipart/form-data;
*boundary=(.*)",tMimeBoundary) then
stripQuotes tMimeBoundary
put lineOffset(tMimeBoundary,sPostdata) into tStartLine
if tStartLine = 0 then exit parsePostdata
repeat forever
put lineOffset(tMimeBoundary,sPostdata, tStartLine + 1) +
(tStartLine + 1) into tEndline
if tEndline < 1 then exit repeat
if matchText(line tStartLine to tEndLine of sPostdata,"Content-
Disposition: +form-data; +name=""e&"([^""e&"]+)",tName) then
put lineOffset(CRLF & CRLF, line tStartLine to tEndLine of
sPostdata) + tStartLine + 1 into tDataOffset
put line tDataOffset to tEndLine - 1 of
sPostdata into tValue
rStripCR tValue
put tValue into sCGIData[tName]
put tEndLine into tStartLine
else
exit repeat
end if
end repeat
else ##assume www form urlencoded
if sPostdata <> empty then split sPostdata by "&" and "="
repeat for each line tKey in the keys of sPostData
put URLDecode(sPostData[tKey]) into sCGIData[tKey]
end repeat
end if
end parsePostData
_______________________________________________
use-revolution mailing list
use-revolution@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution