[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-15 Thread Timothy Perrett

Neil,

If you want to save the byte array, save it into the database, then just write 
a caching proxy that maps a URL to the dispatcher. That is, use 
SoftReferenceCache to cache the database read so that the next time the image 
is requested there is no database hit. 

This has been discussed a fair few times on the list if i remember rightly, so 
best off searching the archives if your not sure where to start.

Cheers, Tim

On 15 Nov 2009, at 04:16, Neil.Lv wrote:

 
 
  I want to save the images to a directory, because this images will
 be used in the flash params.
 
  This file path will be used in the javascript code .
 ###
  var imag=new Array();
  imag[3]=/images/01.jpg;
 ###
 
 Cheers,
  Neil
 
 On Nov 15, 12:05 pm, Neil.Lv anim...@gmail.com wrote:
 Hi all,
 
   Thanks for your tips, and I have some silly question about this.
 
   1:)  a directory that's not part of the app's exploded WAR file
 
   The direcotry tree like this, and Where is i can create a well
 defined directory
 that's not part of the app's exploded WAR file ? I'm notfamiliar
 with this.
 
 ###
 demo
   --src
 --main
   --resources
 --i18n
 --props
   --scala
   --webapp
 --test
   --target
 ###
 
   2:) If I store images to the RDBMS, and how can it be shown in the
 webpage ?
 ###
FileParamHolder(_, mime, name, data)

item.receipt(data).receiptMime(mime)   // ( Array[Byte] that saved
 into database )
 ###
 
   :)
 
   Thanks very much !
 
 Cheers,
   Neil
 
 On Nov 15, 5:43 am, David Pollak feeder.of.the.be...@gmail.com
 wrote:
 
 On Sat, Nov 14, 2009 at 10:25 AM, Neil.Lv anim...@gmail.com wrote:
 
 Tim,
 
  haha, yeah.
 
  I use this code to get the images folder(the full path) of the app.
 
  LiftRules.getResource(/images/).open_!.toString.substring(6)
 (The code is so redundant !)
- G:\project\demo\src\main\webapp\images\
 
 You cannot rely on being able to write to a directory in an application.
 This is dependent on how the specific web app container handles things, but
 I would strongly suggest you write images to a directory that's not part of
 the app's exploded WAR file.  And strongly is a very weak description of
 how forceful I'm being about this.  This kind of code may change behaviour
 between your dev box and production, between versions of your app container.
 
 If you want to store images to serve, either use a well defined directory
 outside your WAR file or put stuff in your RDBMS or put stuff up on Amazon
 (like Twitter does with images).  Amazon has much better infrastructure for
 dealing with serving static content than just about anyone else.
 
  :)
 
  Thank you very much !
 
 Cheers,
   Neil
 
 On Nov 15, 1:50 am, Timothy Perrett timo...@getintheloop.eu wrote:
 Hmm, I guess you must be new to the JVM - you cant write a file inside a
 WAR file; it does not work like that.
 
 You'll need to write to a fully qualified path (as per my example).
 
 Cheers, tim
 
 On 14 Nov 2009, at 17:34, Neil.Lv wrote:
 
  It show this error message:
 
  ERROR - java.io.FileNotFoundException: \images\003.jpg
 
 #  this is the code
 
 val receiptOk = fileHolder match {
 case Full(FileParamHolder(_, null, _, _)) = true
 case Full(FileParamHolder(_, mime, name, data))
  if mime.startsWith(image/) = {
var buff = new java.io.BufferedInputStream(new ByteArrayInputStream
 (data))
try {
 var fos = new java.io.FileOutputStream(new File(/images/ +
 name))
 var in = 0
do {
   in = buff.read()
   if (in != -1){
 fos.write(in)
   }
 } while((in != -1))
fos = null
in = 0
   } catch {
  case e = Log.error(e)
   } finally {
 buff.close()
   }
   buff = null
true
  }
 case Full(_) = {
 S.error(S.??(invalid.receipt.attachment))
 false
 }
 case _ = true
 }
 
 #
 
   Maybe this code is wrong ?
 
   new File(/images/ + name)
 
   I want to save it in the main\webapp\images\  folder.
 - main\webapp\images\ 003.jpg
 
   :)
 
 Cheers,
  Neil
 
 On Nov 15, 12:23 am, Timothy Perrett timo...@getintheloop.eu wrote:
 Neil,
 
 Try something like:
 
 var buff = new java.io.BufferedInputStream(input)
 try {
   var fos = new java.io.FileOutputStream(new File(/some/root/
 filepath/ + image_hash_filename))
   var in = 0
   do {
 in = buff.read()
 if (in != -1){
   fos.write(in)
 }
   } while((in != -1))
   fos = null
   in = 0} catch {
 
   case e = Log.error(e)
 
 } finally {
   buff.close()
 }
 buff = null
 }
 
 In my case, I had the data as an input stream - manipulate this code
 to take it however you need.
 
 Cheers, Tim
 
 On Nov 14, 7:55 am, Neil.Lv anim...@gmail.com wrote:
 
   Here is some code , but it's wrong!
 
   --  java.io.FileNotFoundException: \images\1.jpeg
 
  if mime.startsWith(image/) = {
   try{
 var file: File  = new File(/images/1.jpeg);
 var fos:FileOutputStream = new FileOutputStream(file);
 fos.write(data)
   } catch {
 case e = println(exception:   + e)
 

[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-15 Thread Neil.Lv

Tim,

  I'm not clear that how to do use the caching proxy and maps a URL to
the dispatcher.

  I didn't find the archive about the SoftReferenceCache.

  Is there some exmaple that descript how to use is ~?

  :)

  Thanks very much!

Cheers,
  Neil

On Nov 15, 6:33 pm, Timothy Perrett timo...@getintheloop.eu wrote:
 Neil,

 If you want to save the byte array, save it into the database, then just 
 write a caching proxy that maps a URL to the dispatcher. That is, use 
 SoftReferenceCache to cache the database read so that the next time the image 
 is requested there is no database hit.

 This has been discussed a fair few times on the list if i remember rightly, 
 so best off searching the archives if your not sure where to start.

 Cheers, Tim

 On 15 Nov 2009, at 04:16, Neil.Lv wrote:



   I want to save the images to a directory, because this images will
  be used in the flash params.

   This file path will be used in the javascript code .
  ###
   var imag=new Array();
   imag[3]=/images/01.jpg;
  ###

  Cheers,
   Neil

  On Nov 15, 12:05 pm, Neil.Lv anim...@gmail.com wrote:
  Hi all,

    Thanks for your tips, and I have some silly question about this.

    1:)  a directory that's not part of the app's exploded WAR file

    The direcotry tree like this, and Where is i can create a well
  defined directory
  that's not part of the app's exploded WAR file ? I'm not        familiar
  with this.

  ###
  demo
    --src
      --main
        --resources
          --i18n
          --props
        --scala
        --webapp
      --test
    --target
  ###

    2:) If I store images to the RDBMS, and how can it be shown in the
  webpage ?
  ###
     FileParamHolder(_, mime, name, data)
     
     item.receipt(data).receiptMime(mime)   // ( Array[Byte] that saved
  into database )
  ###

    :)

    Thanks very much !

  Cheers,
    Neil

  On Nov 15, 5:43 am, David Pollak feeder.of.the.be...@gmail.com
  wrote:

  On Sat, Nov 14, 2009 at 10:25 AM, Neil.Lv anim...@gmail.com wrote:

  Tim,

   haha, yeah.

   I use this code to get the images folder(the full path) of the app.

   LiftRules.getResource(/images/).open_!.toString.substring(6)
  (The code is so redundant !)
     - G:\project\demo\src\main\webapp\images\

  You cannot rely on being able to write to a directory in an application.
  This is dependent on how the specific web app container handles things, 
  but
  I would strongly suggest you write images to a directory that's not part 
  of
  the app's exploded WAR file.  And strongly is a very weak description of
  how forceful I'm being about this.  This kind of code may change behaviour
  between your dev box and production, between versions of your app 
  container.

  If you want to store images to serve, either use a well defined directory
  outside your WAR file or put stuff in your RDBMS or put stuff up on Amazon
  (like Twitter does with images).  Amazon has much better infrastructure 
  for
  dealing with serving static content than just about anyone else.

   :)

   Thank you very much !

  Cheers,
    Neil

  On Nov 15, 1:50 am, Timothy Perrett timo...@getintheloop.eu wrote:
  Hmm, I guess you must be new to the JVM - you cant write a file inside a
  WAR file; it does not work like that.

  You'll need to write to a fully qualified path (as per my example).

  Cheers, tim

  On 14 Nov 2009, at 17:34, Neil.Lv wrote:

   It show this error message:

   ERROR - java.io.FileNotFoundException: \images\003.jpg

  #  this is the code

  val receiptOk = fileHolder match {
  case Full(FileParamHolder(_, null, _, _)) = true
  case Full(FileParamHolder(_, mime, name, data))
   if mime.startsWith(image/) = {
     var buff = new java.io.BufferedInputStream(new ByteArrayInputStream
  (data))
     try {
      var fos = new java.io.FileOutputStream(new File(/images/ +
  name))
      var in = 0
     do {
        in = buff.read()
        if (in != -1){
          fos.write(in)
        }
      } while((in != -1))
     fos = null
     in = 0
    } catch {
       case e = Log.error(e)
    } finally {
      buff.close()
    }
    buff = null
     true
   }
  case Full(_) = {
  S.error(S.??(invalid.receipt.attachment))
  false
  }
  case _ = true
  }

  #

    Maybe this code is wrong ?

    new File(/images/ + name)

    I want to save it in the main\webapp\images\  folder.
      - main\webapp\images\ 003.jpg

    :)

  Cheers,
   Neil

  On Nov 15, 12:23 am, Timothy Perrett timo...@getintheloop.eu wrote:
  Neil,

  Try something like:

  var buff = new java.io.BufferedInputStream(input)
  try {
    var fos = new java.io.FileOutputStream(new File(/some/root/
  filepath/ + image_hash_filename))
    var in = 0
    do {
      in = buff.read()
      if (in != -1){
        fos.write(in)
      }
    } while((in != -1))
    fos = null
    in = 0} catch {

    case e = Log.error(e)

  } finally {
    buff.close()
  }
  buff = null
  }

  In my case, I had the data as an input stream - manipulate 

[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-15 Thread Neil.Lv


  It try to deploy the war to the tomcat5.5.25, and the path is
different.

  Use LiftRules.getResource(/images/) to get this information:

   In the dev box:
   -- Path:Full(file:/G:/project/demo/src/main/webapp/images/

   In the tomcat:
   -- Path:Full(jndi:/localhost/demo-1.0/images/

   The war of the demo path:  D:\tomcat_5.5.25\webapps\demo-1.0

   So that how can i resolve this problem ?

Cheers,
  Neil

On Nov 15, 9:57 pm, Neil.Lv anim...@gmail.com wrote:
 Tim,

   I'm not clear that how to do use the caching proxy and maps a URL to
 the dispatcher.

   I didn't find the archive about the SoftReferenceCache.

   Is there some exmaple that descript how to use is ~?

   :)

   Thanks very much!

 Cheers,
   Neil

 On Nov 15, 6:33 pm, Timothy Perrett timo...@getintheloop.eu wrote:

  Neil,

  If you want to save the byte array, save it into the database, then just 
  write a caching proxy that maps a URL to the dispatcher. That is, use 
  SoftReferenceCache to cache the database read so that the next time the 
  image is requested there is no database hit.

  This has been discussed a fair few times on the list if i remember rightly, 
  so best off searching the archives if your not sure where to start.

  Cheers, Tim

  On 15 Nov 2009, at 04:16, Neil.Lv wrote:

    I want to save the images to a directory, because this images will
   be used in the flash params.

    This file path will be used in the javascript code .
   ###
    var imag=new Array();
    imag[3]=/images/01.jpg;
   ###

   Cheers,
    Neil

   On Nov 15, 12:05 pm, Neil.Lv anim...@gmail.com wrote:
   Hi all,

     Thanks for your tips, and I have some silly question about this.

     1:)  a directory that's not part of the app's exploded WAR file

     The direcotry tree like this, and Where is i can create a well
   defined directory
   that's not part of the app's exploded WAR file ? I'm not        familiar
   with this.

   ###
   demo
     --src
       --main
         --resources
           --i18n
           --props
         --scala
         --webapp
       --test
     --target
   ###

     2:) If I store images to the RDBMS, and how can it be shown in the
   webpage ?
   ###
      FileParamHolder(_, mime, name, data)
      
      item.receipt(data).receiptMime(mime)   // ( Array[Byte] that saved
   into database )
   ###

     :)

     Thanks very much !

   Cheers,
     Neil

   On Nov 15, 5:43 am, David Pollak feeder.of.the.be...@gmail.com
   wrote:

   On Sat, Nov 14, 2009 at 10:25 AM, Neil.Lv anim...@gmail.com wrote:

   Tim,

    haha, yeah.

    I use this code to get the images folder(the full path) of the app.

    LiftRules.getResource(/images/).open_!.toString.substring(6)
   (The code is so redundant !)
      - G:\project\demo\src\main\webapp\images\

   You cannot rely on being able to write to a directory in an application.
   This is dependent on how the specific web app container handles things, 
   but
   I would strongly suggest you write images to a directory that's not 
   part of
   the app's exploded WAR file.  And strongly is a very weak description 
   of
   how forceful I'm being about this.  This kind of code may change 
   behaviour
   between your dev box and production, between versions of your app 
   container.

   If you want to store images to serve, either use a well defined 
   directory
   outside your WAR file or put stuff in your RDBMS or put stuff up on 
   Amazon
   (like Twitter does with images).  Amazon has much better infrastructure 
   for
   dealing with serving static content than just about anyone else.

    :)

    Thank you very much !

   Cheers,
     Neil

   On Nov 15, 1:50 am, Timothy Perrett timo...@getintheloop.eu wrote:
   Hmm, I guess you must be new to the JVM - you cant write a file 
   inside a
   WAR file; it does not work like that.

   You'll need to write to a fully qualified path (as per my example).

   Cheers, tim

   On 14 Nov 2009, at 17:34, Neil.Lv wrote:

    It show this error message:

    ERROR - java.io.FileNotFoundException: \images\003.jpg

   #  this is the code

   val receiptOk = fileHolder match {
   case Full(FileParamHolder(_, null, _, _)) = true
   case Full(FileParamHolder(_, mime, name, data))
    if mime.startsWith(image/) = {
      var buff = new java.io.BufferedInputStream(new 
   ByteArrayInputStream
   (data))
      try {
       var fos = new java.io.FileOutputStream(new File(/images/ +
   name))
       var in = 0
      do {
         in = buff.read()
         if (in != -1){
           fos.write(in)
         }
       } while((in != -1))
      fos = null
      in = 0
     } catch {
        case e = Log.error(e)
     } finally {
       buff.close()
     }
     buff = null
      true
    }
   case Full(_) = {
   S.error(S.??(invalid.receipt.attachment))
   false
   }
   case _ = true
   }

   #

     Maybe this code is wrong ?

     new File(/images/ + name)

     I want to save it in the main\webapp\images\  folder.
    

[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-15 Thread Neil.Lv


  Where is the images directory that should i create ?

  Out side of the webapp in the tomcat  or in the webapps?

  like this:   D:\tomcat_5.5.25\webapps\images

  And the lift how to know and find the images folder in the webapps
of the tomcat, not the demo/src/main/webapp/images .

  Thanks very much!

Cheers,
  Neil

On Nov 15, 11:10 pm, Neil.Lv anim...@gmail.com wrote:
   It try to deploy the war to the tomcat5.5.25, and the path is
 different.

   Use LiftRules.getResource(/images/) to get this information:

In the dev box:
-- Path:Full(file:/G:/project/demo/src/main/webapp/images/

In the tomcat:
-- Path:Full(jndi:/localhost/demo-1.0/images/

The war of the demo path:  D:\tomcat_5.5.25\webapps\demo-1.0

So that how can i resolve this problem ?

 Cheers,
   Neil

 On Nov 15, 9:57 pm, Neil.Lv anim...@gmail.com wrote:

  Tim,

I'm not clear that how to do use the caching proxy and maps a URL to
  the dispatcher.

I didn't find the archive about the SoftReferenceCache.

Is there some exmaple that descript how to use is ~?

:)

Thanks very much!

  Cheers,
Neil

  On Nov 15, 6:33 pm, Timothy Perrett timo...@getintheloop.eu wrote:

   Neil,

   If you want to save the byte array, save it into the database, then just 
   write a caching proxy that maps a URL to the dispatcher. That is, use 
   SoftReferenceCache to cache the database read so that the next time the 
   image is requested there is no database hit.

   This has been discussed a fair few times on the list if i remember 
   rightly, so best off searching the archives if your not sure where to 
   start.

   Cheers, Tim

   On 15 Nov 2009, at 04:16, Neil.Lv wrote:

 I want to save the images to a directory, because this images will
be used in the flash params.

 This file path will be used in the javascript code .
###
 var imag=new Array();
 imag[3]=/images/01.jpg;
###

Cheers,
 Neil

On Nov 15, 12:05 pm, Neil.Lv anim...@gmail.com wrote:
Hi all,

  Thanks for your tips, and I have some silly question about this.

  1:)  a directory that's not part of the app's exploded WAR file

  The direcotry tree like this, and Where is i can create a well
defined directory
that's not part of the app's exploded WAR file ? I'm not
familiar
with this.

###
demo
  --src
--main
  --resources
--i18n
--props
  --scala
  --webapp
--test
  --target
###

  2:) If I store images to the RDBMS, and how can it be shown in the
webpage ?
###
   FileParamHolder(_, mime, name, data)
   
   item.receipt(data).receiptMime(mime)   // ( Array[Byte] that saved
into database )
###

  :)

  Thanks very much !

Cheers,
  Neil

On Nov 15, 5:43 am, David Pollak feeder.of.the.be...@gmail.com
wrote:

On Sat, Nov 14, 2009 at 10:25 AM, Neil.Lv anim...@gmail.com wrote:

Tim,

 haha, yeah.

 I use this code to get the images folder(the full path) of the app.

 LiftRules.getResource(/images/).open_!.toString.substring(6)
(The code is so redundant !)
   - G:\project\demo\src\main\webapp\images\

You cannot rely on being able to write to a directory in an 
application.
This is dependent on how the specific web app container handles 
things, but
I would strongly suggest you write images to a directory that's not 
part of
the app's exploded WAR file.  And strongly is a very weak 
description of
how forceful I'm being about this.  This kind of code may change 
behaviour
between your dev box and production, between versions of your app 
container.

If you want to store images to serve, either use a well defined 
directory
outside your WAR file or put stuff in your RDBMS or put stuff up on 
Amazon
(like Twitter does with images).  Amazon has much better 
infrastructure for
dealing with serving static content than just about anyone else.

 :)

 Thank you very much !

Cheers,
  Neil

On Nov 15, 1:50 am, Timothy Perrett timo...@getintheloop.eu wrote:
Hmm, I guess you must be new to the JVM - you cant write a file 
inside a
WAR file; it does not work like that.

You'll need to write to a fully qualified path (as per my example).

Cheers, tim

On 14 Nov 2009, at 17:34, Neil.Lv wrote:

 It show this error message:

 ERROR - java.io.FileNotFoundException: \images\003.jpg

#  this is the code

val receiptOk = fileHolder match {
case Full(FileParamHolder(_, null, _, _)) = true
case Full(FileParamHolder(_, mime, name, data))
 if mime.startsWith(image/) = {
   var buff = new java.io.BufferedInputStream(new 
ByteArrayInputStream
(data))
   try {
var fos = new java.io.FileOutputStream(new File(/images/ +
name))
var in = 0

[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-14 Thread Timothy Perrett

Neil,

Try something like:

var buff = new java.io.BufferedInputStream(input)
try {
  var fos = new java.io.FileOutputStream(new File(/some/root/
filepath/ + image_hash_filename))
  var in = 0
  do {
in = buff.read()
if (in != -1){
  fos.write(in)
}
  } while((in != -1))
  fos = null
  in = 0
} catch {
  case e = Log.error(e)
} finally {
  buff.close()
}
buff = null
}

In my case, I had the data as an input stream - manipulate this code
to take it however you need.

Cheers, Tim

On Nov 14, 7:55 am, Neil.Lv anim...@gmail.com wrote:
   Here is some code , but it's wrong!

   --  java.io.FileNotFoundException: \images\1.jpeg

  if mime.startsWith(image/) = {
   try{
     var file: File  = new File(/images/1.jpeg);
     var fos:FileOutputStream = new FileOutputStream(file);
     fos.write(data)
   } catch {
     case e = println(exception:   + e)
   }
   e.receipt(data).receiptMime(mime)
    true
  }

   I don't know how to write the code in the try catch statement.

   Does anyone can help  me ?~

   Thanks very much !

 Cheers,
   Neil

 On Nov 14, 1:58 pm, Neil.Lv anim...@gmail.com wrote:



  Hi all,

     How to save the uploaded image into the folder via fileUpload in
  Lift?

     I don't want to save it in the database, the example code in the
  Pocketchangeapp

  ###
            val receiptOk = fileHolder match {
              case Full(FileParamHolder(_, null, _, _)) = true
              case Full(FileParamHolder(_, mime, _, data))
                        if mime.startsWith(image/) = {
  //  How can i save the data into a image in the folder.
                          e.receipt(data).receiptMime(mime)
                          true
                        }
              case Full(_) = {
                S.error(Invalid receipt attachment)
                false
              }
              case _ = true
            }
  ###

     To save the image into the webapp\images folder, and it's shown
  just use this link:
     /images/img1.jpg

    Thanks for any suggestion!

  Cheers,
    Neil
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-14 Thread Neil.Lv


  It show this error message:

  ERROR - java.io.FileNotFoundException: \images\003.jpg

#  this is the code

val receiptOk = fileHolder match {
case Full(FileParamHolder(_, null, _, _)) = true
case Full(FileParamHolder(_, mime, name, data))
  if mime.startsWith(image/) = {
var buff = new java.io.BufferedInputStream(new ByteArrayInputStream
(data))
try {
 var fos = new java.io.FileOutputStream(new File(/images/ +
name))
 var in = 0
do {
   in = buff.read()
   if (in != -1){
 fos.write(in)
   }
 } while((in != -1))
fos = null
in = 0
   } catch {
  case e = Log.error(e)
   } finally {
 buff.close()
   }
   buff = null
true
  }
case Full(_) = {
S.error(S.??(invalid.receipt.attachment))
false
}
case _ = true
}

#

   Maybe this code is wrong ?

   new File(/images/ + name)

   I want to save it in the main\webapp\images\  folder.
 - main\webapp\images\ 003.jpg

   :)

Cheers,
  Neil


On Nov 15, 12:23 am, Timothy Perrett timo...@getintheloop.eu wrote:
 Neil,

 Try something like:

 var buff = new java.io.BufferedInputStream(input)
 try {
   var fos = new java.io.FileOutputStream(new File(/some/root/
 filepath/ + image_hash_filename))
   var in = 0
   do {
     in = buff.read()
     if (in != -1){
       fos.write(in)
     }
   } while((in != -1))
   fos = null
   in = 0} catch {

   case e = Log.error(e)

 } finally {
   buff.close()
 }
 buff = null
 }

 In my case, I had the data as an input stream - manipulate this code
 to take it however you need.

 Cheers, Tim

 On Nov 14, 7:55 am, Neil.Lv anim...@gmail.com wrote:

    Here is some code , but it's wrong!

    --  java.io.FileNotFoundException: \images\1.jpeg

   if mime.startsWith(image/) = {
    try{
      var file: File  = new File(/images/1.jpeg);
      var fos:FileOutputStream = new FileOutputStream(file);
      fos.write(data)
    } catch {
      case e = println(exception:   + e)
    }
    e.receipt(data).receiptMime(mime)
     true
   }

    I don't know how to write the code in the try catch statement.

    Does anyone can help  me ?~

    Thanks very much !

  Cheers,
    Neil

  On Nov 14, 1:58 pm, Neil.Lv anim...@gmail.com wrote:

   Hi all,

      How to save the uploaded image into the folder via fileUpload in
   Lift?

      I don't want to save it in the database, the example code in the
   Pocketchangeapp

   ###
             val receiptOk = fileHolder match {
               case Full(FileParamHolder(_, null, _, _)) = true
               case Full(FileParamHolder(_, mime, _, data))
                         if mime.startsWith(image/) = {
   //  How can i save the data into a image in the folder.
                           e.receipt(data).receiptMime(mime)
                           true
                         }
               case Full(_) = {
                 S.error(Invalid receipt attachment)
                 false
               }
               case _ = true
             }
   ###

      To save the image into the webapp\images folder, and it's shown
   just use this link:
      /images/img1.jpg

     Thanks for any suggestion!

   Cheers,
     Neil
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-14 Thread Timothy Perrett

Hmm, I guess you must be new to the JVM - you cant write a file inside a WAR 
file; it does not work like that. 

You'll need to write to a fully qualified path (as per my example).

Cheers, tim

On 14 Nov 2009, at 17:34, Neil.Lv wrote:

 
 
  It show this error message:
 
  ERROR - java.io.FileNotFoundException: \images\003.jpg
 
 #  this is the code
 
 val receiptOk = fileHolder match {
 case Full(FileParamHolder(_, null, _, _)) = true
 case Full(FileParamHolder(_, mime, name, data))
  if mime.startsWith(image/) = {
var buff = new java.io.BufferedInputStream(new ByteArrayInputStream
 (data))
try {
 var fos = new java.io.FileOutputStream(new File(/images/ +
 name))
 var in = 0
do {
   in = buff.read()
   if (in != -1){
 fos.write(in)
   }
 } while((in != -1))
fos = null
in = 0
   } catch {
 case e = Log.error(e)
   } finally {
buff.close()
   }
   buff = null
true
  }
 case Full(_) = {
 S.error(S.??(invalid.receipt.attachment))
 false
 }
 case _ = true
 }
 
 #
 
   Maybe this code is wrong ?
 
   new File(/images/ + name)
 
   I want to save it in the main\webapp\images\  folder.
 - main\webapp\images\ 003.jpg
 
   :)
 
 Cheers,
  Neil
 
 
 On Nov 15, 12:23 am, Timothy Perrett timo...@getintheloop.eu wrote:
 Neil,
 
 Try something like:
 
 var buff = new java.io.BufferedInputStream(input)
 try {
   var fos = new java.io.FileOutputStream(new File(/some/root/
 filepath/ + image_hash_filename))
   var in = 0
   do {
 in = buff.read()
 if (in != -1){
   fos.write(in)
 }
   } while((in != -1))
   fos = null
   in = 0} catch {
 
   case e = Log.error(e)
 
 } finally {
   buff.close()
 }
 buff = null
 }
 
 In my case, I had the data as an input stream - manipulate this code
 to take it however you need.
 
 Cheers, Tim
 
 On Nov 14, 7:55 am, Neil.Lv anim...@gmail.com wrote:
 
   Here is some code , but it's wrong!
 
   --  java.io.FileNotFoundException: \images\1.jpeg
 
  if mime.startsWith(image/) = {
   try{
 var file: File  = new File(/images/1.jpeg);
 var fos:FileOutputStream = new FileOutputStream(file);
 fos.write(data)
   } catch {
 case e = println(exception:   + e)
   }
   e.receipt(data).receiptMime(mime)
true
  }
 
   I don't know how to write the code in the try catch statement.
 
   Does anyone can help  me ?~
 
   Thanks very much !
 
 Cheers,
   Neil
 
 On Nov 14, 1:58 pm, Neil.Lv anim...@gmail.com wrote:
 
 Hi all,
 
How to save the uploaded image into the folder via fileUpload in
 Lift?
 
I don't want to save it in the database, the example code in the
 Pocketchangeapp
 
 ###
   val receiptOk = fileHolder match {
 case Full(FileParamHolder(_, null, _, _)) = true
 case Full(FileParamHolder(_, mime, _, data))
   if mime.startsWith(image/) = {
 //  How can i save the data into a image in the folder.
 e.receipt(data).receiptMime(mime)
 true
   }
 case Full(_) = {
   S.error(Invalid receipt attachment)
   false
 }
 case _ = true
   }
 ###
 
To save the image into the webapp\images folder, and it's shown
 just use this link:
/images/img1.jpg
 
   Thanks for any suggestion!
 
 Cheers,
   Neil
  
 


--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-14 Thread Neil.Lv

Tim,

  haha, yeah.

  I use this code to get the images folder(the full path) of the app.

  LiftRules.getResource(/images/).open_!.toString.substring(6)
(The code is so redundant !)
- G:\project\demo\src\main\webapp\images\

  :)

  Thank you very much !

Cheers,
  Neil


On Nov 15, 1:50 am, Timothy Perrett timo...@getintheloop.eu wrote:
 Hmm, I guess you must be new to the JVM - you cant write a file inside a WAR 
 file; it does not work like that.

 You'll need to write to a fully qualified path (as per my example).

 Cheers, tim

 On 14 Nov 2009, at 17:34, Neil.Lv wrote:



   It show this error message:

   ERROR - java.io.FileNotFoundException: \images\003.jpg

  #  this is the code

  val receiptOk = fileHolder match {
  case Full(FileParamHolder(_, null, _, _)) = true
  case Full(FileParamHolder(_, mime, name, data))
   if mime.startsWith(image/) = {
     var buff = new java.io.BufferedInputStream(new ByteArrayInputStream
  (data))
     try {
      var fos = new java.io.FileOutputStream(new File(/images/ +
  name))
      var in = 0
     do {
        in = buff.read()
        if (in != -1){
          fos.write(in)
        }
      } while((in != -1))
     fos = null
     in = 0
    } catch {
       case e = Log.error(e)
    } finally {
      buff.close()
    }
    buff = null
     true
   }
  case Full(_) = {
  S.error(S.??(invalid.receipt.attachment))
  false
  }
  case _ = true
  }

  #

    Maybe this code is wrong ?

    new File(/images/ + name)

    I want to save it in the main\webapp\images\  folder.
      - main\webapp\images\ 003.jpg

    :)

  Cheers,
   Neil

  On Nov 15, 12:23 am, Timothy Perrett timo...@getintheloop.eu wrote:
  Neil,

  Try something like:

  var buff = new java.io.BufferedInputStream(input)
  try {
    var fos = new java.io.FileOutputStream(new File(/some/root/
  filepath/ + image_hash_filename))
    var in = 0
    do {
      in = buff.read()
      if (in != -1){
        fos.write(in)
      }
    } while((in != -1))
    fos = null
    in = 0} catch {

    case e = Log.error(e)

  } finally {
    buff.close()
  }
  buff = null
  }

  In my case, I had the data as an input stream - manipulate this code
  to take it however you need.

  Cheers, Tim

  On Nov 14, 7:55 am, Neil.Lv anim...@gmail.com wrote:

    Here is some code , but it's wrong!

    --  java.io.FileNotFoundException: \images\1.jpeg

   if mime.startsWith(image/) = {
    try{
      var file: File  = new File(/images/1.jpeg);
      var fos:FileOutputStream = new FileOutputStream(file);
      fos.write(data)
    } catch {
      case e = println(exception:   + e)
    }
    e.receipt(data).receiptMime(mime)
     true
   }

    I don't know how to write the code in the try catch statement.

    Does anyone can help  me ?~

    Thanks very much !

  Cheers,
    Neil

  On Nov 14, 1:58 pm, Neil.Lv anim...@gmail.com wrote:

  Hi all,

     How to save the uploaded image into the folder via fileUpload in
  Lift?

     I don't want to save it in the database, the example code in the
  Pocketchangeapp

  ###
            val receiptOk = fileHolder match {
              case Full(FileParamHolder(_, null, _, _)) = true
              case Full(FileParamHolder(_, mime, _, data))
                        if mime.startsWith(image/) = {
  //  How can i save the data into a image in the folder.
                          e.receipt(data).receiptMime(mime)
                          true
                        }
              case Full(_) = {
                S.error(Invalid receipt attachment)
                false
              }
              case _ = true
            }
  ###

     To save the image into the webapp\images folder, and it's shown
  just use this link:
     /images/img1.jpg

    Thanks for any suggestion!

  Cheers,
    Neil
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-14 Thread Timothy Perrett

I really, really would not use open_! - this is very dangerous.

How about:

LiftRules.getResource(/images/).map(_.substring(6)).openOr(/some/
default/path)

Cheers, Tim

On Nov 14, 6:25 pm, Neil.Lv anim...@gmail.com wrote:
 Tim,

   haha, yeah.

   I use this code to get the images folder(the full path) of the app.

   LiftRules.getResource(/images/).open_!.toString.substring(6)
 (The code is so redundant !)
     - G:\project\demo\src\main\webapp\images\

   :)

   Thank you very much !

 Cheers,
   Neil

 On Nov 15, 1:50 am, Timothy Perrett timo...@getintheloop.eu wrote:



  Hmm, I guess you must be new to the JVM - you cant write a file inside a 
  WAR file; it does not work like that.

  You'll need to write to a fully qualified path (as per my example).

  Cheers, tim

  On 14 Nov 2009, at 17:34, Neil.Lv wrote:

    It show this error message:

    ERROR - java.io.FileNotFoundException: \images\003.jpg

   #  this is the code

   val receiptOk = fileHolder match {
   case Full(FileParamHolder(_, null, _, _)) = true
   case Full(FileParamHolder(_, mime, name, data))
    if mime.startsWith(image/) = {
      var buff = new java.io.BufferedInputStream(new ByteArrayInputStream
   (data))
      try {
       var fos = new java.io.FileOutputStream(new File(/images/ +
   name))
       var in = 0
      do {
         in = buff.read()
         if (in != -1){
           fos.write(in)
         }
       } while((in != -1))
      fos = null
      in = 0
     } catch {
        case e = Log.error(e)
     } finally {
       buff.close()
     }
     buff = null
      true
    }
   case Full(_) = {
   S.error(S.??(invalid.receipt.attachment))
   false
   }
   case _ = true
   }

   #

     Maybe this code is wrong ?

     new File(/images/ + name)

     I want to save it in the main\webapp\images\  folder.
       - main\webapp\images\ 003.jpg

     :)

   Cheers,
    Neil

   On Nov 15, 12:23 am, Timothy Perrett timo...@getintheloop.eu wrote:
   Neil,

   Try something like:

   var buff = new java.io.BufferedInputStream(input)
   try {
     var fos = new java.io.FileOutputStream(new File(/some/root/
   filepath/ + image_hash_filename))
     var in = 0
     do {
       in = buff.read()
       if (in != -1){
         fos.write(in)
       }
     } while((in != -1))
     fos = null
     in = 0} catch {

     case e = Log.error(e)

   } finally {
     buff.close()
   }
   buff = null
   }

   In my case, I had the data as an input stream - manipulate this code
   to take it however you need.

   Cheers, Tim

   On Nov 14, 7:55 am, Neil.Lv anim...@gmail.com wrote:

     Here is some code , but it's wrong!

     --  java.io.FileNotFoundException: \images\1.jpeg

    if mime.startsWith(image/) = {
     try{
       var file: File  = new File(/images/1.jpeg);
       var fos:FileOutputStream = new FileOutputStream(file);
       fos.write(data)
     } catch {
       case e = println(exception:   + e)
     }
     e.receipt(data).receiptMime(mime)
      true
    }

     I don't know how to write the code in the try catch statement.

     Does anyone can help  me ?~

     Thanks very much !

   Cheers,
     Neil

   On Nov 14, 1:58 pm, Neil.Lv anim...@gmail.com wrote:

   Hi all,

      How to save the uploaded image into the folder via fileUpload in
   Lift?

      I don't want to save it in the database, the example code in the
   Pocketchangeapp

   ###
             val receiptOk = fileHolder match {
               case Full(FileParamHolder(_, null, _, _)) = true
               case Full(FileParamHolder(_, mime, _, data))
                         if mime.startsWith(image/) = {
   //  How can i save the data into a image in the folder.
                           e.receipt(data).receiptMime(mime)
                           true
                         }
               case Full(_) = {
                 S.error(Invalid receipt attachment)
                 false
               }
               case _ = true
             }
   ###

      To save the image into the webapp\images folder, and it's shown
   just use this link:
      /images/img1.jpg

     Thanks for any suggestion!

   Cheers,
     Neil
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-14 Thread David Pollak
On Sat, Nov 14, 2009 at 10:25 AM, Neil.Lv anim...@gmail.com wrote:


 Tim,

  haha, yeah.

  I use this code to get the images folder(the full path) of the app.

  LiftRules.getResource(/images/).open_!.toString.substring(6)
 (The code is so redundant !)
- G:\project\demo\src\main\webapp\images\


You cannot rely on being able to write to a directory in an application.
This is dependent on how the specific web app container handles things, but
I would strongly suggest you write images to a directory that's not part of
the app's exploded WAR file.  And strongly is a very weak description of
how forceful I'm being about this.  This kind of code may change behaviour
between your dev box and production, between versions of your app container.

If you want to store images to serve, either use a well defined directory
outside your WAR file or put stuff in your RDBMS or put stuff up on Amazon
(like Twitter does with images).  Amazon has much better infrastructure for
dealing with serving static content than just about anyone else.


  :)

  Thank you very much !

 Cheers,
   Neil


 On Nov 15, 1:50 am, Timothy Perrett timo...@getintheloop.eu wrote:
  Hmm, I guess you must be new to the JVM - you cant write a file inside a
 WAR file; it does not work like that.
 
  You'll need to write to a fully qualified path (as per my example).
 
  Cheers, tim
 
  On 14 Nov 2009, at 17:34, Neil.Lv wrote:
 
 
 
It show this error message:
 
ERROR - java.io.FileNotFoundException: \images\003.jpg
 
   #  this is the code
 
   val receiptOk = fileHolder match {
   case Full(FileParamHolder(_, null, _, _)) = true
   case Full(FileParamHolder(_, mime, name, data))
if mime.startsWith(image/) = {
  var buff = new java.io.BufferedInputStream(new ByteArrayInputStream
   (data))
  try {
   var fos = new java.io.FileOutputStream(new File(/images/ +
   name))
   var in = 0
  do {
 in = buff.read()
 if (in != -1){
   fos.write(in)
 }
   } while((in != -1))
  fos = null
  in = 0
 } catch {
case e = Log.error(e)
 } finally {
   buff.close()
 }
 buff = null
  true
}
   case Full(_) = {
   S.error(S.??(invalid.receipt.attachment))
   false
   }
   case _ = true
   }
 
   #
 
 Maybe this code is wrong ?
 
 new File(/images/ + name)
 
 I want to save it in the main\webapp\images\  folder.
   - main\webapp\images\ 003.jpg
 
 :)
 
   Cheers,
Neil
 
   On Nov 15, 12:23 am, Timothy Perrett timo...@getintheloop.eu wrote:
   Neil,
 
   Try something like:
 
   var buff = new java.io.BufferedInputStream(input)
   try {
 var fos = new java.io.FileOutputStream(new File(/some/root/
   filepath/ + image_hash_filename))
 var in = 0
 do {
   in = buff.read()
   if (in != -1){
 fos.write(in)
   }
 } while((in != -1))
 fos = null
 in = 0} catch {
 
 case e = Log.error(e)
 
   } finally {
 buff.close()
   }
   buff = null
   }
 
   In my case, I had the data as an input stream - manipulate this code
   to take it however you need.
 
   Cheers, Tim
 
   On Nov 14, 7:55 am, Neil.Lv anim...@gmail.com wrote:
 
 Here is some code , but it's wrong!
 
 --  java.io.FileNotFoundException: \images\1.jpeg
 
if mime.startsWith(image/) = {
 try{
   var file: File  = new File(/images/1.jpeg);
   var fos:FileOutputStream = new FileOutputStream(file);
   fos.write(data)
 } catch {
   case e = println(exception:   + e)
 }
 e.receipt(data).receiptMime(mime)
  true
}
 
 I don't know how to write the code in the try catch statement.
 
 Does anyone can help  me ?~
 
 Thanks very much !
 
   Cheers,
 Neil
 
   On Nov 14, 1:58 pm, Neil.Lv anim...@gmail.com wrote:
 
   Hi all,
 
  How to save the uploaded image into the folder via fileUpload in
   Lift?
 
  I don't want to save it in the database, the example code in the
   Pocketchangeapp
 
   ###
 val receiptOk = fileHolder match {
   case Full(FileParamHolder(_, null, _, _)) = true
   case Full(FileParamHolder(_, mime, _, data))
 if mime.startsWith(image/) = {
   //  How can i save the data into a image in the folder.
   e.receipt(data).receiptMime(mime)
   true
 }
   case Full(_) = {
 S.error(Invalid receipt attachment)
 false
   }
   case _ = true
 }
   ###
 
  To save the image into the webapp\images folder, and it's shown
   just use this link:
  /images/img1.jpg
 
 Thanks for any suggestion!
 
   Cheers,
 Neil
 



-- 
Lift, the simply functional web framework http://liftweb.net
Beginning Scala http://www.apress.com/book/view/1430219890
Follow me: http://twitter.com/dpp
Surf the harmonics


[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-14 Thread Neil.Lv

Hi all,

  Thanks for your tips, and I have some silly question about this.

  1:)  a directory that's not part of the app's exploded WAR file

  The direcotry tree like this, and Where is i can create a well
defined directory
that's not part of the app's exploded WAR file ? I'm notfamiliar
with this.

###
demo
  --src
--main
  --resources
--i18n
--props
  --scala
  --webapp
--test
  --target
###

  2:) If I store images to the RDBMS, and how can it be shown in the
webpage ?
###
   FileParamHolder(_, mime, name, data)
   
   item.receipt(data).receiptMime(mime)   // ( Array[Byte] that saved
into database )
###

  :)

  Thanks very much !

Cheers,
  Neil

On Nov 15, 5:43 am, David Pollak feeder.of.the.be...@gmail.com
wrote:
 On Sat, Nov 14, 2009 at 10:25 AM, Neil.Lv anim...@gmail.com wrote:

  Tim,

   haha, yeah.

   I use this code to get the images folder(the full path) of the app.

   LiftRules.getResource(/images/).open_!.toString.substring(6)
  (The code is so redundant !)
     - G:\project\demo\src\main\webapp\images\

 You cannot rely on being able to write to a directory in an application.
 This is dependent on how the specific web app container handles things, but
 I would strongly suggest you write images to a directory that's not part of
 the app's exploded WAR file.  And strongly is a very weak description of
 how forceful I'm being about this.  This kind of code may change behaviour
 between your dev box and production, between versions of your app container.

 If you want to store images to serve, either use a well defined directory
 outside your WAR file or put stuff in your RDBMS or put stuff up on Amazon
 (like Twitter does with images).  Amazon has much better infrastructure for
 dealing with serving static content than just about anyone else.



   :)

   Thank you very much !

  Cheers,
    Neil

  On Nov 15, 1:50 am, Timothy Perrett timo...@getintheloop.eu wrote:
   Hmm, I guess you must be new to the JVM - you cant write a file inside a
  WAR file; it does not work like that.

   You'll need to write to a fully qualified path (as per my example).

   Cheers, tim

   On 14 Nov 2009, at 17:34, Neil.Lv wrote:

 It show this error message:

 ERROR - java.io.FileNotFoundException: \images\003.jpg

#  this is the code

val receiptOk = fileHolder match {
case Full(FileParamHolder(_, null, _, _)) = true
case Full(FileParamHolder(_, mime, name, data))
 if mime.startsWith(image/) = {
   var buff = new java.io.BufferedInputStream(new ByteArrayInputStream
(data))
   try {
    var fos = new java.io.FileOutputStream(new File(/images/ +
name))
    var in = 0
   do {
      in = buff.read()
      if (in != -1){
        fos.write(in)
      }
    } while((in != -1))
   fos = null
   in = 0
  } catch {
     case e = Log.error(e)
  } finally {
    buff.close()
  }
  buff = null
   true
 }
case Full(_) = {
S.error(S.??(invalid.receipt.attachment))
false
}
case _ = true
}

#

  Maybe this code is wrong ?

  new File(/images/ + name)

  I want to save it in the main\webapp\images\  folder.
    - main\webapp\images\ 003.jpg

  :)

Cheers,
 Neil

On Nov 15, 12:23 am, Timothy Perrett timo...@getintheloop.eu wrote:
Neil,

Try something like:

var buff = new java.io.BufferedInputStream(input)
try {
  var fos = new java.io.FileOutputStream(new File(/some/root/
filepath/ + image_hash_filename))
  var in = 0
  do {
    in = buff.read()
    if (in != -1){
      fos.write(in)
    }
  } while((in != -1))
  fos = null
  in = 0} catch {

  case e = Log.error(e)

} finally {
  buff.close()
}
buff = null
}

In my case, I had the data as an input stream - manipulate this code
to take it however you need.

Cheers, Tim

On Nov 14, 7:55 am, Neil.Lv anim...@gmail.com wrote:

  Here is some code , but it's wrong!

  --  java.io.FileNotFoundException: \images\1.jpeg

 if mime.startsWith(image/) = {
  try{
    var file: File  = new File(/images/1.jpeg);
    var fos:FileOutputStream = new FileOutputStream(file);
    fos.write(data)
  } catch {
    case e = println(exception:   + e)
  }
  e.receipt(data).receiptMime(mime)
   true
 }

  I don't know how to write the code in the try catch statement.

  Does anyone can help  me ?~

  Thanks very much !

Cheers,
  Neil

On Nov 14, 1:58 pm, Neil.Lv anim...@gmail.com wrote:

Hi all,

   How to save the uploaded image into the folder via fileUpload in
Lift?

   I don't want to save it in the database, the example code in the
Pocketchangeapp

###
          val receiptOk = fileHolder match {
            case Full(FileParamHolder(_, null, _, _)) = 

[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-14 Thread Neil.Lv


  I want to save the images to a directory, because this images will
be used in the flash params.

  This file path will be used in the javascript code .
###
  var imag=new Array();
  imag[3]=/images/01.jpg;
###

Cheers,
  Neil

On Nov 15, 12:05 pm, Neil.Lv anim...@gmail.com wrote:
 Hi all,

   Thanks for your tips, and I have some silly question about this.

   1:)  a directory that's not part of the app's exploded WAR file

   The direcotry tree like this, and Where is i can create a well
 defined directory
 that's not part of the app's exploded WAR file ? I'm not        familiar
 with this.

 ###
 demo
   --src
     --main
       --resources
         --i18n
         --props
       --scala
       --webapp
     --test
   --target
 ###

   2:) If I store images to the RDBMS, and how can it be shown in the
 webpage ?
 ###
    FileParamHolder(_, mime, name, data)
    
    item.receipt(data).receiptMime(mime)   // ( Array[Byte] that saved
 into database )
 ###

   :)

   Thanks very much !

 Cheers,
   Neil

 On Nov 15, 5:43 am, David Pollak feeder.of.the.be...@gmail.com
 wrote:

  On Sat, Nov 14, 2009 at 10:25 AM, Neil.Lv anim...@gmail.com wrote:

   Tim,

    haha, yeah.

    I use this code to get the images folder(the full path) of the app.

    LiftRules.getResource(/images/).open_!.toString.substring(6)
   (The code is so redundant !)
      - G:\project\demo\src\main\webapp\images\

  You cannot rely on being able to write to a directory in an application.
  This is dependent on how the specific web app container handles things, but
  I would strongly suggest you write images to a directory that's not part of
  the app's exploded WAR file.  And strongly is a very weak description of
  how forceful I'm being about this.  This kind of code may change behaviour
  between your dev box and production, between versions of your app container.

  If you want to store images to serve, either use a well defined directory
  outside your WAR file or put stuff in your RDBMS or put stuff up on Amazon
  (like Twitter does with images).  Amazon has much better infrastructure for
  dealing with serving static content than just about anyone else.

    :)

    Thank you very much !

   Cheers,
     Neil

   On Nov 15, 1:50 am, Timothy Perrett timo...@getintheloop.eu wrote:
Hmm, I guess you must be new to the JVM - you cant write a file inside a
   WAR file; it does not work like that.

You'll need to write to a fully qualified path (as per my example).

Cheers, tim

On 14 Nov 2009, at 17:34, Neil.Lv wrote:

  It show this error message:

  ERROR - java.io.FileNotFoundException: \images\003.jpg

 #  this is the code

 val receiptOk = fileHolder match {
 case Full(FileParamHolder(_, null, _, _)) = true
 case Full(FileParamHolder(_, mime, name, data))
  if mime.startsWith(image/) = {
    var buff = new java.io.BufferedInputStream(new ByteArrayInputStream
 (data))
    try {
     var fos = new java.io.FileOutputStream(new File(/images/ +
 name))
     var in = 0
    do {
       in = buff.read()
       if (in != -1){
         fos.write(in)
       }
     } while((in != -1))
    fos = null
    in = 0
   } catch {
      case e = Log.error(e)
   } finally {
     buff.close()
   }
   buff = null
    true
  }
 case Full(_) = {
 S.error(S.??(invalid.receipt.attachment))
 false
 }
 case _ = true
 }

 #

   Maybe this code is wrong ?

   new File(/images/ + name)

   I want to save it in the main\webapp\images\  folder.
     - main\webapp\images\ 003.jpg

   :)

 Cheers,
  Neil

 On Nov 15, 12:23 am, Timothy Perrett timo...@getintheloop.eu wrote:
 Neil,

 Try something like:

 var buff = new java.io.BufferedInputStream(input)
 try {
   var fos = new java.io.FileOutputStream(new File(/some/root/
 filepath/ + image_hash_filename))
   var in = 0
   do {
     in = buff.read()
     if (in != -1){
       fos.write(in)
     }
   } while((in != -1))
   fos = null
   in = 0} catch {

   case e = Log.error(e)

 } finally {
   buff.close()
 }
 buff = null
 }

 In my case, I had the data as an input stream - manipulate this code
 to take it however you need.

 Cheers, Tim

 On Nov 14, 7:55 am, Neil.Lv anim...@gmail.com wrote:

   Here is some code , but it's wrong!

   --  java.io.FileNotFoundException: \images\1.jpeg

  if mime.startsWith(image/) = {
   try{
     var file: File  = new File(/images/1.jpeg);
     var fos:FileOutputStream = new FileOutputStream(file);
     fos.write(data)
   } catch {
     case e = println(exception:   + e)
   }
   e.receipt(data).receiptMime(mime)
    true
  }

   I don't know how to write the code in the try catch statement.

   Does anyone can 

[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?

2009-11-14 Thread Naftoli Gugenheim

The file not found error may be because the directory doesn't exist. Try 
calling file.mkdirs first.

-
Neil.Lvanim...@gmail.com wrote:



  I want to save the images to a directory, because this images will
be used in the flash params.

  This file path will be used in the javascript code .
###
  var imag=new Array();
  imag[3]=/images/01.jpg;
###

Cheers,
  Neil

On Nov 15, 12:05 pm, Neil.Lv anim...@gmail.com wrote:
 Hi all,

   Thanks for your tips, and I have some silly question about this.

   1:)  a directory that's not part of the app's exploded WAR file

   The direcotry tree like this, and Where is i can create a well
 defined directory
 that's not part of the app's exploded WAR file ? I'm not        familiar
 with this.

 ###
 demo
   --src
     --main
       --resources
         --i18n
         --props
       --scala
       --webapp
     --test
   --target
 ###

   2:) If I store images to the RDBMS, and how can it be shown in the
 webpage ?
 ###
    FileParamHolder(_, mime, name, data)
    
    item.receipt(data).receiptMime(mime)   // ( Array[Byte] that saved
 into database )
 ###

   :)

   Thanks very much !

 Cheers,
   Neil

 On Nov 15, 5:43 am, David Pollak feeder.of.the.be...@gmail.com
 wrote:

  On Sat, Nov 14, 2009 at 10:25 AM, Neil.Lv anim...@gmail.com wrote:

   Tim,

    haha, yeah.

    I use this code to get the images folder(the full path) of the app.

    LiftRules.getResource(/images/).open_!.toString.substring(6)
   (The code is so redundant !)
      - G:\project\demo\src\main\webapp\images\

  You cannot rely on being able to write to a directory in an application.
  This is dependent on how the specific web app container handles things, but
  I would strongly suggest you write images to a directory that's not part of
  the app's exploded WAR file.  And strongly is a very weak description of
  how forceful I'm being about this.  This kind of code may change behaviour
  between your dev box and production, between versions of your app container.

  If you want to store images to serve, either use a well defined directory
  outside your WAR file or put stuff in your RDBMS or put stuff up on Amazon
  (like Twitter does with images).  Amazon has much better infrastructure for
  dealing with serving static content than just about anyone else.

    :)

    Thank you very much !

   Cheers,
     Neil

   On Nov 15, 1:50 am, Timothy Perrett timo...@getintheloop.eu wrote:
Hmm, I guess you must be new to the JVM - you cant write a file inside a
   WAR file; it does not work like that.

You'll need to write to a fully qualified path (as per my example).

Cheers, tim

On 14 Nov 2009, at 17:34, Neil.Lv wrote:

  It show this error message:

  ERROR - java.io.FileNotFoundException: \images\003.jpg

 #  this is the code

 val receiptOk = fileHolder match {
 case Full(FileParamHolder(_, null, _, _)) = true
 case Full(FileParamHolder(_, mime, name, data))
  if mime.startsWith(image/) = {
    var buff = new java.io.BufferedInputStream(new ByteArrayInputStream
 (data))
    try {
     var fos = new java.io.FileOutputStream(new File(/images/ +
 name))
     var in = 0
    do {
       in = buff.read()
       if (in != -1){
         fos.write(in)
       }
     } while((in != -1))
    fos = null
    in = 0
   } catch {
      case e = Log.error(e)
   } finally {
     buff.close()
   }
   buff = null
    true
  }
 case Full(_) = {
 S.error(S.??(invalid.receipt.attachment))
 false
 }
 case _ = true
 }

 #

   Maybe this code is wrong ?

   new File(/images/ + name)

   I want to save it in the main\webapp\images\  folder.
     - main\webapp\images\ 003.jpg

   :)

 Cheers,
  Neil

 On Nov 15, 12:23 am, Timothy Perrett timo...@getintheloop.eu wrote:
 Neil,

 Try something like:

 var buff = new java.io.BufferedInputStream(input)
 try {
   var fos = new java.io.FileOutputStream(new File(/some/root/
 filepath/ + image_hash_filename))
   var in = 0
   do {
     in = buff.read()
     if (in != -1){
       fos.write(in)
     }
   } while((in != -1))
   fos = null
   in = 0} catch {

   case e = Log.error(e)

 } finally {
   buff.close()
 }
 buff = null
 }

 In my case, I had the data as an input stream - manipulate this code
 to take it however you need.

 Cheers, Tim

 On Nov 14, 7:55 am, Neil.Lv anim...@gmail.com wrote:

   Here is some code , but it's wrong!

   --  java.io.FileNotFoundException: \images\1.jpeg

  if mime.startsWith(image/) = {
   try{
     var file: File  = new File(/images/1.jpeg);
     var fos:FileOutputStream = new FileOutputStream(file);
     fos.write(data)
   } catch {
     case e = println(exception: