tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Smith <d...@cornell.edu>
Subject Re: access files from jsp
Date Tue, 29 Apr 2008 21:08:45 GMT
No, I don't mean that. It should be able to retrieve any type of file. 
What you can do with it from within a jsp might be somewhat limited 
though. What exactly do you want to do with the file contents within the 
jsp?

BTW, I highly recommend you read the documentation for the jstl taglibs 
and do some googling. I'm sure some research would help you a lot.

--David

henry human wrote:
> Hi David,
> most of these files are PDF, XLS and not only TXT
> format.
> You are meaning that with a JSP definitvly one can
> reads only TXT files?
>
> i understood with help of  
> --- David Fisher <dfisher@jmlafferty.com> schrieb:
>
>   
>> 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:
>>>>>
>>>>>           
> === message truncated ===
>
>
>
>       __________________________________________________________
> 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


Mime
View raw message