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