[Seaside] Re: Re: [squeak-dev] [Q] File Upload/Download Server, Comanche or Swazoo

Janko Mivšek janko.mivsek at eranova.si
Wed Jul 23 20:20:40 UTC 2008

Philippe Marschall wrote:

>> Swazoo 2.x has streaming upload and download capability and can easily
>> handle such big files. I tested with few GB by myself. On both Squeak and
>> VW.
>> Maybe it is a time to add that streaming to your Swazoo adaptor too? See
>> http://www.swazoo.org/streaming.html for more. See also HTTPRequestTest with
>> examples, how to use it (testing-posts).

> That assumes you already know the names of the fields containing files
> which I don't. I can only see #postDataKeys and #postKeysAndValuesDo:
> which seem to read the full request. I also couldn't find a test (or
> sender) for #postDataAt:beforeStreamingDo:.

Not knowing names of the fields is the whole point of "deferring" 
parsing the POST request until this information is known. Deferring 
means that request is not read and completely parsed already by Swazoo 
but lately, when some post data is first needed. That allows you to 
delay streaming too, until you have enough info where to stream and to 
open the destination file accordingly.

See this example from http://www.swazoo.org/streaming.html:

Site>>answerTo: aHTTPRequest
   | stream |
     postDataAt: 'file'
     beforeStreamingDo: [:datum |
       stream := (SpFilename named: datum filename) writeStream.
       datum writeStream: stream].

   aHTTPRequest ensureFullRead. "to be sure streaming occurs"
   stream close.           "mandatory, to close open stream! "

   ^HTTPResponse ok

In that example we open a file named as the original file, which  is 
sent in request as post data, just before a file content.

I hope that helps

Best regards

Janko Mivšek
Smalltalk Web Application Server

More information about the seaside mailing list