Very nice DPP - will try and take a look at this today.

Cheers, Tim

On Jul 1, 7:20 pm, David Pollak <feeder.of.the.be...@gmail.com> wrote:
> Okay... I've checked in new code.
>
> In LiftRules, there's:
>
>   /**
>    * The function that converts a fieldName, contentType, fileName and an
> InputStream into
>    * a FileParamHolder.  By default, create an in-memory instance.  Use
> OnDiskFileParamHolder
>    * to create an on-disk version
>    */
>   var handleMimeFile: (String, String, String, InputStream) =>
> FileParamHolder =
>   (fieldName, contentType, fileName, inputStream) =>
>   new InMemFileParamHolder(fieldName, contentType, fileName,
> Helpers.readWholeStream(inputStream))
>
> You can change handleMimeFile to use OnDiskFileParamHolder.  There's a
> companion object that has a helper that'll allow you to create an instance
> out of the parameters.  By default, the OnDiskFileParamHolder deletes the
> temporary file when it is finalized.
>
> If you want to monitor the progress of an upload, use LiftRules:
>   /**
>    * The global multipart progress listener:
>    *     pBytesRead - The total number of bytes, which have been read so
> far.
>    *    pContentLength - The total number of bytes, which are being read.
> May be -1, if this number is unknown.
>    *    pItems - The number of the field, which is currently being read. (0
> = no item so far, 1 = first item is being read, ...)
>    */
>   var progessListener: (Long, Long, Int) => Unit = (_, _, _) => ()
>
> By default, it does nothing, but you can put in a function that'll look for
> a session-specific CometActor and send it messages.
>
> If the above does not satisfy all your needs, you can subclass
> FileParamHolder and do whatever you want.
>
> Thanks,
>
> David
>
> On Wed, Jul 1, 2009 at 10:31 AM, David Pollak <feeder.of.the.be...@gmail.com
>
>
>
>
>
> > wrote:
> > K... I'll check some code in later today.
>
> > On Wed, Jul 1, 2009 at 9:05 AM, Andrew Scherpbier 
> > <and...@scherpbier.org>wrote:
>
> >> It would also be nice to be able to provide progress feedback.  The page
> >> returned after the form submission can then use comet to display a
> >> progress bar or something like that.  (The media upload at Vimeo comes
> >> to mind as a good example of this!)
>
> >> Also, I would suggest some smarts when creating temporary files.  It
> >> might be good to abstract the cache so that small files don't get put on
> >> disk.
>
> >> --Andrew
>
> >> Vlad Seryakov wrote:
> >> > I am also contemplating to use Lift but lack of big file upload is the
> >> > showstopper. We need to upload images, and big video files and
> >> > currently there i snot way to do it in Lift, i need something else to
> >> > handle that which makes the whole stuff more complex than needed.
>
> >> > Spooling into temp file and doing async upload of multiple files at
> >> > the same time is what needed. Nowadays media uploads is normal and
> >> > those files are getting bigger and bigger.
>
> >> > On Jun 30, 5:58 pm, Timothy Perrett <timo...@getintheloop.eu> wrote:
>
> >> >> This has been hurting me for quite a while now (raised it on list
> >> >> about 2 months ago) and could really do with getting it fixed.
>
> >> >> As derek points out, it's not a small change which is why I've done
> >> >> nothing about it to date - a little too much core hacking to feel happy
>
> >> >> If you think your able to do something about it that would be
> >> >> absolutly brilliant!
>
> >> >> Cheers
>
> >> >> Tim
>
> >> >> Sent from my iPhone
>
> >> >> On 30 Jun 2009, at 22:33, David Pollak <feeder.of.the.be...@gmail.com>
> >> >> wrote:
>
> >> >>> What kind of priority is this issue?  I think I can abstract things
> >> >>> in such a way that it works correctly, but it'll take a couple of
> >> >>> days.
>
> >> >>> On Tue, Jun 30, 2009 at 2:08 PM, Derek Chen-Becker <
> >> dchenbec...@gmail.com
>
> >> >>>> wrote:
>
> >> >>> Well, as usual something that seemed simple at first glance is now
> >> >>> looking somewhat complex. I'm thinking of reworking the fileUpload
> >> >>> handling to allow a user to register either a (String, String, Array
> >> >>> [Byte]) => Any or (String, String, InputStream) => Any function,
> >> >>> which would then be executed during request processing. The issue is
> >> >>>  that form field processing (ParamHolders) takes place in Req, befor
> >> >>> e LiftSession has been set up, and the act of parsing the request fo
> >> >>> r form data, particularly for large upload streams (the target of th
> >> >>> ese changes) precludes holding on to any data for later processing (
> >> >>> the servlet container cannot be expected to hold the entire request
> >> >>> in memory). On the other hand, users should reasonably expect that t
> >> >>> heir form handling functions are stateful, so I'm trying to think of
> >> >>>  some way to meet in the middle on form processing. Ideas?
>
> >> >>> Derek
>
> >> >>> --
> >> >>> Lift, the simply functional web frameworkhttp://liftweb.net
> >> >>> Beginning Scalahttp://www.apress.com/book/view/1430219890
> >> >>> Follow me:http://twitter.com/dpp
> >> >>> Git some:http://github.com/dpp
>
> > --
> > Lift, the simply functional web frameworkhttp://liftweb.net
> > Beginning Scalahttp://www.apress.com/book/view/1430219890
>
> > Follow me:http://twitter.com/dpp
> > Git some:http://github.com/dpp
>
> --
> Lift, the simply functional web frameworkhttp://liftweb.net
> Beginning Scalahttp://www.apress.com/book/view/1430219890
> Follow me:http://twitter.com/dpp
> Git some:http://github.com/dpp
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Lift" group.
To post to this group, send email to liftweb@googlegroups.com
To unsubscribe from this group, send email to 
liftweb+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/liftweb?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to