[Lift] Re: How to save the uploaded image into the folder via fileUpload in Lift?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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?
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: