• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

Where to store image files in Java web app

 
Milton Ochoa
Ranch Hand
Posts: 336
Firefox Browser Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Ranchers

I have a personal web site that I use to view family pictures and
such. I have a database that stores the file name and I keep all of
the images in a sub-directory under WEB-INF so that they are not
directly accessible. I then use a servlet to check for a valid login
and forward the request to the WEB-INF directory.

I.E.
Images stored in WEB-INF/private
User requests /myapp/image/fileabc.jpg
Servlet mapped to 'image' checks for valid login, then forwards
request to WEB-INF/private/fileabc.jpg

This works okay, but I have 2 problems with this solution.
1) I am storing data in WEB-INF, where it really does not belong.
2) The web application is huge because it is bloated with all of these
image files.

To me, the images are data and should be stored somewhere else. The
problem is I cannot find an existing solution that lets me load an
image from outside the application context.

I would like to store the images in something like D:\images and then
use a servlet to get the filename from the database and return the
image from the D:\images path.

The only solutions I have seen are to write a servlet that streams the
image file to the web page. I can go this route, but I wasn't sure if
there was a better alternative. To me anyway, this seems like a
problem that would be fairly common. I mean Flickr and YouTube
certainly do not store all of their media within the application
directories.

There may be something really obvious that I am overlooking so before
I start writing a servlet to stream my images, I figured I would run
this by the experts.

Any thoughts or ideas would be appreciated.


Thanks.
 
Mark E Hansen
Ranch Hand
Posts: 650
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Creating an image handler servlet seems like the right way to go. This servlet can even check permission if you want.
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 65123
91
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Yes, I would not store the images inside the web app. Makes for all sorts of nasty problems.

Store them elsewhere in the file system and use a servlet, as Mark suggested, to serve them.
 
Milton Ochoa
Ranch Hand
Posts: 336
Firefox Browser Java Linux
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thank you for you answer.

Before that solution, I was storing the images on a Database MySQL, but I found that when I retrieve this images (for a thumbnails) took too long to display the JSP.

Definitive It's not a good a idea to store images on a database. am I right?
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 65123
91
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If the database is a bottleneck, then no, I wouldn't do that.
 
Alok Baba
Greenhorn
Posts: 5
Hibernate Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Milton,
I know its very old post..but i am also struggling with same scenario. I don't want to store images in DB , is there any good approach you have found for this problem?
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 65123
91
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Please detail your problem exactly.
 
Alok Baba
Greenhorn
Posts: 5
Hibernate Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Bear, Thanks for your reply.
I figuring out which is the best way to store uploaded images (something like profile pic) in Java web app so that it is secured and we can access it in optimized way?
Storing images in DB takes more time to access. Storing images in WEB-INF is good idea? ..Kindly suggest me the best approach.
 
Abhay Agarwal
Ranch Hand
Posts: 1376
Eclipse IDE Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I would say .. store the profile pictures on the file system and profile picture locations [file path] in the database.
Saving picture in File system will always be beneficial because your images can be served from Web Server as Static content. Caching feature can be used on file system. DB query to get profile picture path shall be easier and quicker.
 
Alok Baba
Greenhorn
Posts: 5
Hibernate Java Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Thanks Abhay
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic