Thanx for that. Now, I'm wondering, someone was talking about a fully 
working script on rebol.mksa.net but the site is down. Anyone have it 
laying around? I surely don't want to reinvent the wheel when doing this.

Eric

[EMAIL PROTECTED] wrote:

> Eric:
> 
> 
>>Does anyone know where I can find out how to allow users to upload files 
>> via their web browsers and save them with Rebol? 
> 
> 
> 
> I went round in circles working this out at the beginning of this year.
> 
> This is what I ended up with.
> 
> STEP 1 -- get read-cgi
> 
> You may have this function already -- you'll be using it for non-multipart 
> files.
> If not, it's here:
> http://www.rebol.com/docs/words/wread-io.html
> 
> STEP 2 -- get code to decode multipart CGI data
> 
> Luckily, Andreas did the hard part for us, and published it on the Mailing 
> List.
> Available from:
> http://www.rebol.org/cgi-bin/cgiwrap/rebol/ml-display-message.r?m=rmlKVSQ
> 
> with some further discussion here:
> http://www.rebol.org/cgi-bin/cgiwrap/rebol/ml-display-thread.r?m=rmlZYMQ
> 
> STEP 3: The HTML
> 
> As with all other CGI languages, you need some HTML.
> 
> Something like this for a simple page that has a single file to upload 
> (Andreas' code works happily with multiple files on the same page).
> 
> You'll need to add the name of your CGI program in the action tag
> 
> <form enctype="multipart/form-data" action="...your cgi program..." 
> method="post">
> <div>
> <input type="text" name="non-mp1" size="20">
> <input type="file" name="mp1" size="50">
> <input type="submit" alt="update button" name="update" value="update"> 
> </div>
> </form>
> 
> 
> 
> STEP 4 -- Process it in a CGI program
> 
> This code is somewhat convoluted as it covers the case where
> the input data does not contain any multi-part fields. (It's written that
> way so a single CGI program can both put out a blank form and 
> process the results from it).
> 
> Your code can be simpler if the CGI is used only to read a page with
> multi-part data.
> 
> post-data: read-cgi
> error? try [cgi-object: construct decode-cgi copy post-data]
> error? try [cgi-object: construct cons-utils/decode-multipart-form-data
>               system/options/cgi/content-type
>                 copy post-data
>             ]
> if error? try [cgi-object/non-mp1]
>     [ error? try [cgi-object: construct decode-cgi copy post-data]]
> 
> 
> ;; You can now do things with the uploaded file, eg
> 
> write/binary %saved-file cgi-object/mp1
> 
> 
> 
> You can see the end results of this here....
> http://www.rebol.org/cgi-bin/cgiwrap/rebol/package-information.r?script-name=l
> ds-demo1-package.r
> ....the page is listing mainly JPGs that were uploaded this this code.
> 
> Sunanda.

-- 
To unsubscribe from the list, just send an email to rebol-request
at rebol.com with unsubscribe as the subject.

Reply via email to