So, you need a directory where you can write files and serve them to the web, and you don't want that directory to be hard-coded in your application.
First, you need a way to specify the directory when the app is installed. (In general your app may need a bunch of configuration settings.) There are various places that you can put these settings - <context-param> in web.xml, a config file read by the webapp, a database table, etc. The way that your servlets and JSP pages access these settings depends on how they're stored. In my app, I store these settings in the database, and set up a variable so that image files are specified in JSP as "${imageFiles}/image1.jpg", which comes out as "/appfiles/images/image1.jpg" (or whatever). Then, when the app is installed and configured, the admin has to set up a directory that is writable by Tomcat, and is published on the web. For stand-alone Tomcat, this can be a directory in the ROOT webapp, e.g. $CATALINA_BASE/ROOT/appfiles/images. If Tomcat is fronted by a web server, the image files could be served by the web server. The admin has to set two settings for your app: the URL to access the directory (e.g. "/appfiles/images") and the file system pathname for the same directory, so you know where to write the files (e.g. "$CATALINA_BASE/ROOT/appfiles/images"). Hope this helps. -- Len 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]