This sounds like a good wiki subject. Wiki gardeners ? Br's, Marius
On Dec 1, 7:26 am, David Pollak <feeder.of.the.be...@gmail.com> wrote: > Folks, > > Lately there's been a bunch of chatter on the list about image upload and > figuring out how to put the image files in the right place to serve them > again. > > I've written a simple example of image uploading, storing the image in the > RDBMS and then serving the image. You can find the code > at:http://github.com/dpp/imagine/ > > The file upload snippet is very simple: > > class DoUpload { > private def saveFile(fp: FileParamHolder): Unit = { > fp.file match { > case null => > case x if x.length == 0 => > case x => > val blob = ImageBlob.create.image(x).saveMe > ImageInfo.create.name > (fp.fileName).mimeType(fp.mimeType).blob(blob).saveMe > S.notice("Thanks for the upload") > S.redirectTo("/") > } > } > > def render(in: NodeSeq): NodeSeq = > bind("upload", in, "file" -> SHtml.fileUpload(saveFile _)) > > } > > If the blob is uploaded, it's put in a row in ImageBlob and an ImageInfo row > is created to store the name and mime type. There are two different rows so > that one doesn't have to pull the whole blob back when you're checking for > the upload date. > > Serving the image is similarly concise: > > def serveImage: LiftRules.DispatchPF = { > case req @ Req("images" :: _ :: Nil, _, GetRequest) if > findFromRequest(req).isDefined => > () => { > val info = findFromRequest(req).open_! // open is valid here because > we just tested in the guard > > // Test for expiration > req.testFor304(info.date, "Expires" -> toInternetDate(millis + > 30.days)) or > // load the blob and return it > info.blob.obj.map(blob => InMemoryResponse(blob.image, > List(("Last-Modified", toInternetDate(info.date.is)), > > ("Expires", toInternetDate(millis + 30.days)), > > ("Content-Type", info.mimeType.is)), Nil, 200)) > } > } > > If the request matches /images/xxx where xxx is a name in the ImageInfo > table, check to see if we can return a 304 (not modified). If not, we pull > the blob from the database and return it. > > I hope this helps folks who are looking to manage and serve images. > > Thanks, > > David > > -- > Lift, the simply functional web frameworkhttp://liftweb.net > Beginning Scalahttp://www.apress.com/book/view/1430219890 > Follow me:http://twitter.com/dpp > Surf the harmonics -- You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to lift...@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.