on-Rev updates.
Andre Garzia
andre at andregarzia.com
Sun May 31 12:36:01 EDT 2009
Alex,
I am still assembling a library to be distributed but the piece that
decodes uploads is this one:
check the source for it fills a global called gDataA with data, for
example the files goes into: gDataA["FILES"]
Cheers
andre
--> File Upload Related (MIME Decoder)
--on decodeUpload
if "multipart/form-data" is in toLower($_SERVER["CONTENT_TYPE"]) then
## Mime enclosure!
read from stdin for $_SERVER["CONTENT_LENGTH"] chars
put it into gDataA["SERVER"]["STDIN"]
## Get boundary
local tMIMEBoundary
set the itemdel to ";"
put item 2 of $_SERVER["CONTENT_TYPE"] into tMIMEBoundary
if "boundary" is in tMIMEBoundary then
set the itemdel to "="
put item 2 of tMIMEBoundary into tMIMEBoundary
## We got the boundary let us split the files
local p = 0
repeat with x = 1 to the number of lines in gDataA["SERVER"]["STDIN"]
put line x of gDataA["SERVER"]["STDIN"] into tLine
if tMIMEBoundary is in tLine then
## We got a new part.
add 1 to p
put lineoffset(crlf & crlf, gDataA["SERVER"]["STDIN"], x) into tHeadersEnd
put line x+1 to x+tHeadersEnd of gDataA["SERVER"]["STDIN"] into tHeaders
repeat for each line tHeader in tHeaders
set the itemdel to ":"
put item 1 of tHeader into tHeaderName
put item 2 of tHeader into tHeaderValue
trim tHeaderValue
trim tHeaderName
if ";" is in tHeaderValue then
# We got attibutes.
set the itemdel to ";"
put item 1 of tHeaderValue into gDataA["FILES"][p][tHeaderName]
put item 2 to -1 of tHeaderValue into tHeaderAttributes
replace "; " with "&" in tHeaderAttributes
replace quote with empty in tHeaderAttributes
trim tHeaderAttributes
split tHeaderAttributes by "&" and "="
repeat for each key tKey in tHeaderAttributes
put tHeaderAttributes[tKey] into gDataA["FILES"][p][tKey]
end repeat
else
put tHeaderValue into gDataA["FILES"][p][tHeaderName]
end if
end repeat
put x+tHeadersEnd into x
else
put tLine after gDataA["FILES"][p]["Content"]
end if
end repeat
end if
--
http://www.andregarzia.com All We Do Is Code.
More information about the use-livecode
mailing list