tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Fisher <dfis...@jmlafferty.com>
Subject Re: access files from jsp
Date Tue, 29 Apr 2008 19:10:39 GMT
Henry doesn't say if these are text files or binary files.

If these are binary files like PDF, PPT and XLS files then a servlet  
will be needed - not a jsp.

We use variations like the following in both Tomcat 4.1.31 and Tomcat  
5.5.26

public class OpenFileServlet extends HttpServlet{

     public void doGet (HttpServletRequest request,  
HttpServletResponse response) throws ServletException, IOException {

         // You probably want to look up the url - which is really a  
path.
         String url = request.getParameter("url");
         if(url == null) return;

         // You'll know your mime types for your content.
         String ext = request.getParameter("ext");
         String content_type;

         if (".ppt".equals(ext)) {content_type = "application/vnd.ms- 
powerpoint"; }
         else if (".xls".equals(ext)) {content_type = "application/ 
vnd.ms-excel"; }
         else {content_type = "application/pdf";}

         // we don't like to inline Office documents.
         boolean is_inline = "application/pdf".equals(content_type);

         File f = new File(url);

         if ( f.exists() && f.length() > 0) {
             response.setContentType( content_type);
             // The following works way better in Windows IE than ext=
             response.setHeader("Content-disposition",  
(is_inline?"inline":"attachment")+";filename=" + f.getName());
             int lng = (int)f.length();
             response.setContentLength( lng );
             FileInputStream fis = new FileInputStream(f);
             byte[] chunk = new byte[16184];
             int count;
             while ((count = fis.read(chunk)) >=0 ) {
               response.getOutputStream().write(chunk,0,count);
             }
             fis.close();
         } else {
             log("File not found: " + url);
         }
     }
}



FYI - this approach really became necessary about when 4.1.29 came out  
- at that time Tomcat got pretty strict with non-Text being served via  
JSP. All of our PDF and PPT content broke in Windows IE. And we had to  
back out a whole release.

Regards,
Dave

On Apr 29, 2008, at 1:39 PM, David Smith wrote:

> So... the "remote file" is available to the local system on a  
> network drive. That's a fun one. There are a couple of different  
> ways to do this.
>
> 1. Using Windows fileshares
>
> Let me preface this by saying *I've* never done this. The few times  
> I've had a tomcat server on a Windows machine, it only ever accessed  
> local files. There are people on the list with way more experience  
> than I have.
>
> As I understand it, as long as tomcat is running under a user  
> account that has privileges to read the remote file, you could use a  
> UNC path with java standard file access classes and methods to read  
> the file. The mapped drive letter wouldn't work unless tomcat was  
> only running while you are logged in. In a jsp, this could be done  
> with a scriptlet:
>
> <!-- import your classes at the top of the jsp.... -->
> <jsp:scriptlet>
> try {
> FileInputStream remoteFileReader = new FileInputStream( "\\\ 
> \remoteServer\\archive\\files\\myFile.txt" ) ;
> // do something with the file
> } catch ( Exception e ) {
> // do something if the access fails
> } finally {
> try {
> remoteFileReader.close() ;
> } catch ( Exception e ) {}
> }
> </jsp:scriptlet>
>
> It should be mentioned the system account most services run under by  
> default does not have any privilege to access remote files via UNC  
> path, so you'll have to customize your tomcat installation a  
> little. ... Or always be logged into the system and have it running  
> as you which isn't the most ideal method.
>
> 2. Using a webserver on the remote system
>
> This I have done and it's more platform independent. Your jsp can  
> request it from the remote server using standard taglibs:
>
> (note standard.jar and jstl.jar must be in your webapp's WEB-INF/lib  
> directory)
>
> <!-- import the core taglib from jstl at the top of the file. Docs  
> for the jstl taglib can help with this -->
>
> <c:import url="http://remoteSystem.dns.com/http/path/to/file.txt"  
> var="fileContents" />
> <!--.... Do something with the file contents, it'll be available in  
> the fileContents page context attribute.... -->
>
>
> --David
>
> henry human wrote:
>> Thanks David,
>> I try to clarify my situation.
>> I have a JSP running in local computer in tomcat. This
>> JSP should read from a remote machine. The files are
>> under d:\archive\files. These directory which provide
>> a repository functionality could not be transfer
>> somewhere else. The files “must be” saved there. 1) Scennario one:  
>> The remote machine does not hava e
>> webserver
>> 2) Scenario two: a tomcat is running on remote
>> computer
>> My questions:
>> 1) Do I need the webserver at all to access remotely
>> the files?
>> 2) Is it poosile to access the data on d:\archive…
>> without to put them in a webserver directory or not?
>> If no, do I need configuration for the webserver (f.i.
>> tomcat)to allow access to the files from outside?
>>
>> --- David Smith <dns4@cornell.edu> schrieb:
>>
>>
>>> Here's the picture you painted in the original email
>>> and I based my answer on:
>>>
>>> 1. You have a jsp file on a tomcat server which
>>> needs to read information from a remote system
>>> 2. The system containing the remote file has a
>>> webserver you could put the file in.
>>>
>>> The c:import tag is a java standard tag library
>>> (JSTL) tag used to import data form locations outside the jsp.  In  
>>> this
>>> case, I'm saying you could request the file from the remote
>>> webserver.  Google is your friend if you'd like more information.
>>>
>>> If I've misunderstood your environment, please
>>> provide a *lot* more detail -- specifically more information  
>>> regarding
>>> the system the remote file reside's on (does it have a web server?).
>>>
>>> --David
>>>
>>> henry human wrote:
>>>
>>>>
>>>>> Seems to me the simplest is the c:import tag and
>>>>>
>>>> sorry,I don't understand what you mean, could you
>>>>
>>> tell
>>>
>>>> more detailed. Maybe a little code code, a sample,
>>>>
>>> etc
>>>
>>>>
>>>>> fetch the file via http
>>>>>
>>>> how??
>>>>> -- just my two cents.   You know more about your
>>>>> architecture and what's available than any of us.
>>>>>
>>>> ??
>>>> what
>>>> should be configured in tomcat ?
>>>> Do you mean that i do not need tomcat at all for
>>>>
>>> this
>>>
>>>> scenario?
>>>> I think it is not possible to read from the hard disc directories  
>>>> f.i. d:\archive\files
>>>>
>>> without
>>>
>>>> helps of a web server ?
>>>>
>>>> I am appreciated, if you get a sample, more
>>>>
>>> details!
>>>
>>>>
>>>>> --David
>>>>>
>>>>> henry human wrote:
>>>>>
>>>>>> Once again because there was a mistake in the
>>>>>>
>>>>> first
>>>>>
>>>>>> email :
>>>>>> i am about to read from a JSP the data at a
>>>>>> remote computer. At remote computer is tomcat
>>>>>> running. the files are stored in  remote computer at
>>>>>> d:\archive\files  The port 80 is also accessible.
>>>>>> Please tell me, what should be configured in tomcat to  be able 

>>>>>> to access the files
>>>>>> ?
>>>>>> I am thankful for any hint
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>> __________________________________________________________
>>
>>>>
>>>>>> Gesendet von Yahoo! Mail.
>>>>>> Mehr Möglichkeiten, in Kontakt zu bleiben.
>>>>>>
>>>>> http://de.overview.mail.yahoo.com
>>>>>
>>>>>>
>> ---------------------------------------------------------------------
>>
>>>>
>>>>>> To start a new topic, e-mail:
>>>>>>
>>>>> users@tomcat.apache.org
>>>>>
>>>>>> To unsubscribe, e-mail:
>>>>>>
>>>>> users-unsubscribe@tomcat.apache.org
>>>>>
>>>>>> For additional commands, e-mail:
>>>>>>
>>>>> users-help@tomcat.apache.org
>>>>>
>>>>>>
>>>>> -- 
>>>>> David Smith
>>>>> Network Operations Supervisor
>>>>> Department of Entomology
>>>>> Cornell University
>>>>> 2132 Comstock Hall
>>>>> Ithaca, NY 14853
>>>>> Phone: (607) 255-9571
>>>>> Fax: (607) 255-0940
>>>>>
>>>>>
>>>>>
>>>>>
>> ---------------------------------------------------------------------
>>
>>>>
>>>>> To start a new topic, e-mail:
>>>>> users@tomcat.apache.org
>>>>> To unsubscribe, e-mail:
>>>>> users-unsubscribe@tomcat.apache.org
>>>>> For additional commands, e-mail:
>>>>> users-help@tomcat.apache.org
>>>>>
>>>>>
>>>>>
>>>>
>>>>      E-Mails jetzt auf Ihrem Handy.
>>>> www.yahoo.de/go
>>>>
>>>>
>>>>
>> ---------------------------------------------------------------------
>>
>>>> To start a new topic, e-mail:
>>>>
>>> users@tomcat.apache.org
>>>
>>>> To unsubscribe, e-mail:
>>>>
>>> users-unsubscribe@tomcat.apache.org
>>>
>>>> For additional commands, e-mail:
>>>>
>>> users-help@tomcat.apache.org
>>>
>>>>
>>>
>>>
>> ---------------------------------------------------------------------
>>
>>> To start a new topic, e-mail:
>>> users@tomcat.apache.org
>>> To unsubscribe, e-mail:
>>> users-unsubscribe@tomcat.apache.org
>>> For additional commands, e-mail:
>>> users-help@tomcat.apache.org
>>>
>>>
>>>
>>
>>
>>
>>      __________________________________________________________
>> Gesendet von Yahoo! Mail.
>> Mehr Möglichkeiten, in Kontakt zu bleiben. http://de.overview.mail.yahoo.com
>>
>> ---------------------------------------------------------------------
>> To start a new topic, e-mail: users@tomcat.apache.org
>> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
>> For additional commands, e-mail: users-help@tomcat.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To start a new topic, e-mail: users@tomcat.apache.org
> To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: users-help@tomcat.apache.org
>
>


---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message