One solution which is often mentioned to this question is to return a URL to a servlet which knows how to generate the .jpg image as its response. Set the context type appropriately, and write the JPEG bytes to the output stream.
Tim > -----Original Message----- > From: Mohsen Saboorian [mailto:[EMAIL PROTECTED] > Sent: Monday, August 07, 2006 5:32 AM > To: Tomcat Users List > Subject: Re: Writing files accessible from a browser > > You can use a servlet init param inside web.xml for avoiding hardcoded > solutions. > e.g. > <context-param> > <param-name>MY_PATH</param-name> > <param-value>c:\my\path\to\imgs</param-value> > </context-param> > > > On 8/7/06, Romain Quilici <[EMAIL PROTECTED]> wrote: > > Hi, > > Hope I will be clear enough: > > > > One part of my web application receives encodes stream that it has to > > convert to jpg images. When an image is written on the server, it > > notifies a Servlet which pushes the name (or the url) of the newly > > generated image inside client browser(thanks to pushlets technology). > > The Servlet can only push a String (Pushlets requirements). > > > > So my problem is where can I write the images, so they can be accessible > > by a URL. One easy solution, the one I use for testing, is to hardcode > > in my webapp the directory where the images are written. > > For instance TOMCAT_HOME\webapps\frames\, > > and in my jsp to have <img src="http://myserver/frames/name.jpg> where > > name.jpg is pushed by the servlet when this image is generated. > > > > However, this solution is not satisfactory, indeed, if I deploy my > > application in another place, I don't want people to edit my code to > > change for suitable values. I admit I could use properties or a > > configuration file to set these value(even if I am not sure it would > > work in all configuration), anyway I would like to check if using the > > servletcontext, or other solutions might be more appropriate. > > As I said a solution with the temp directory would be perfect, if this > > directory was accessible with a URL > > > > Hope it is clear > > Regards > > Li wrote: > > > Hi, > > > > > > It is not advisable to make your webapp dir writable, can you tell me > > > what exactly would you like to achieve so that I may get more info to > > > help out ... > > > > > > > > > > > > On 8/7/06, Romain Quilici <[EMAIL PROTECTED]> wrote: > > >> Hi, > > >> thanks for the advice, > > >> But I want to avoid harcoded links such as > $APACHE_HOME\httpdocs\images > > >> or <a href="http://yourdomain/images/1.jpg"> in my jsp. > > >> > > >> Indeed I don't want to modify these values if I decide Tomcat to run > on > > >> another port, or to install Tomcat in another directory or even OS. > That > > >> is why I am looking for an approach using > > >> the webapp context, so I don't have to worry about the OS, or the > port, > > >> or whatever configuration. > > >> Anyway thanks for your help > > >> Regards > > >> Romain > > >> > > >> Li wrote: > > >> > Hi, > > >> > > > >> > Here are few steps of achieving it (just tested, and it works): > > >> > 1. use FileOutputStream or any output streaming object to write a > > >> > image file > > >> > into the directory > > >> > in Windows, the path string should look like: > > >> > "c:\apache_home\httpdocs\images\1.jpg" > > >> > in unix/linux, the path should look like > > >> > $APACHE_HOME\httpdocs\images\1.jpg" > > >> > (assume, you had defined APACHE_HOME, make sure the images folder > > >> > is read/write > > >> > only for the user/group that runs tomcat > > >> > 2. Make sure apache is on ... > > >> > 3. in your jsp: use > > >> > e.g. <a href="http://yourdomain/images/1.jpg">click to view</a> > > >> > > > >> > > > >> > Wish it helps > > >> > > > >> > On 8/7/06, Romain Quilici <[EMAIL PROTECTED]> wrote: > > >> >> Thanks for the answer, > > >> >> this solution was part of my investigation, and was actually the > > >> first > > >> >> idea I had. > > >> >> The problem with this approach is I don't know how to access the > > >> >> /image_dir/ from within my web application. > > >> >> Maybe using something like > > >> >> String path = servletContext.getRealPath("/"); > > >> >> String imagePath = path+"../image_dir/" > > >> >> and use the imagePath to create my images, then in my jsp > > >> something like > > >> >> <request.getContextPath()/../image_dir/image1.jpg> > > >> >> > > >> >> But I am not sure this approach works in all configurations, > > >> >> particularly if my webapp is deployed inside a war. > > >> >> > > >> >> Thanks > > >> >> Romain > > >> >> > > >> >> Li wrote: > > >> >> > if you have apache server, you can write file to its home dir, > and > > >> >> > then use > > >> >> > http://<youdomain>/<image_dir>/image_name.suffix to view. > > >> >> > > > >> >> > On 8/7/06, Romain Quilici <[EMAIL PROTECTED]> wrote: > > >> >> >> Hi all, > > >> >> >> I have been reading several messages about writing files inside > > >> a web > > >> >> >> application, but I found no answer regarding my problem. > > >> >> >> > > >> >> >> I need to write files on the file system that can be accessible > > >> >> with a > > >> >> >> browser(I write images). > > >> >> >> > > >> >> >> - The most reliable solution I found was to use the webapp's > tmp > > >> >> >> directory, unfortunately this directory is not accessible with > > >> a URL. > > >> >> >> > > >> >> >> - Another solution would be to write these images under my > webapp > > >> >> >> root(or in another place under my webapp). But it seems that > this > > >> >> >> approach does not work with webapps deployed in a war file. > > >> >> >> Indeed you cannot write inside wars like this. > > >> >> >> > > >> >> >> I don't want to rely on some hardcoded solutions. There is > > >> still the > > >> >> >> possibility to pass the absolute path to the directory (let's > say > > >> >> >> TOMCAT_HOME/webapps/myimages/) and later, use inside my JSP > > >> >> >> <request.getContextPath()/../myimages/image1.jpg>, but I think > > >> this > > >> >> >> solution won't work in many configurations > > >> >> >> > > >> >> >> Thanks a lot for your help > > >> >> >> Regards > > >> >> >> Romain > > >> >> >> > > >> >> >> > > >> >> >> > > >> >> >> > > >> >> >> > > >> --------------------------------------------------------------------- > > >> >> >> To start a new topic, e-mail: users@tomcat.apache.org > > >> >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] > > >> >> >> For additional commands, e-mail: [EMAIL PROTECTED] > > >> >> >> > > >> >> >> > > >> >> > > > >> >> > > > >> >> > > >> >> > > >> >> > > >> >> ------------------------------------------------------------------ > --- > > >> >> To start a new topic, e-mail: users@tomcat.apache.org > > >> >> To unsubscribe, e-mail: [EMAIL PROTECTED] > > >> >> For additional commands, e-mail: [EMAIL PROTECTED] > > >> >> > > >> >> > > >> > > > >> > > > >> > > >> > > >> > > >> --------------------------------------------------------------------- > > >> To start a new topic, e-mail: users@tomcat.apache.org > > >> To unsubscribe, e-mail: [EMAIL PROTECTED] > > >> For additional commands, e-mail: [EMAIL PROTECTED] > > >> > > >> > > > > > > > > > > > > > > --------------------------------------------------------------------- > > To start a new topic, e-mail: users@tomcat.apache.org > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > To start a new topic, e-mail: users@tomcat.apache.org > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To start a new topic, e-mail: users@tomcat.apache.org To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]