Hmmm, right... Sorry..

It does work on generate/serialize, but perhaps I was wrong and doesn't
it work on matches that only contain a reader. Funny though..

Have you tried the following already?

        <map:match pattern="download/**">
                <map:read src="{1}" mime-type="application/x-download"
/>
        </map:match>

(or something alike?)

Kind regards,
Geert 

> -----Oorspronkelijk bericht-----
> Van: Roel Croonenberghs [mailto:[EMAIL PROTECTED] 
> Verzonden: vrijdag 29 september 2006 14:24
> Aan: users@cocoon.apache.org
> Onderwerp: RE: link to a file
> 
> 
> If I do that, i ge the following error; 
> 
> 
> Internal Server Error 
> 
> Message: null 
> 
> Description: java.lang.NullPointerException 
> 
> Sender: org.apache.cocoon.servlet.CocoonServlet 
> 
> Source: Cocoon Servlet 
> 
> Request URI 
> 
> download/test.pdf 
> 
> cause 
> 
> java.lang.NullPointerException 
> 
> request-uri 
> 
> /cocoontest/download/test.pdf 
> 
> stacktrace 
> 
> java.lang.NullPointerException
>                 at 
> org.apache.catalina.connector.ResponseBase.setContentType(Resp
> onseBase.java:874)
>                 at 
> org.apache.catalina.connector.HttpResponseBase.setContentType(
> HttpResponseBase.java:853)
>                 at 
> org.apache.catalina.connector.ResponseFacade.setContentType(Re
> sponseFacade.java:197)
>                 at 
> org.apache.cocoon.environment.http.HttpResponse.setContentType
> (HttpResponse.java:214)
>                 at 
> org.apache.cocoon.environment.http.HttpEnvironment.setContentT
> ype(HttpEnvironment.java:216)
>                 at 
> org.apache.cocoon.components.pipeline.AbstractProcessingPipeli
> ne.setupReader(AbstractProcessingPipeline.java:583)
>                 at 
> org.apache.cocoon.components.pipeline.AbstractProcessingPipeli
> ne.preparePipeline(AbstractProcessingPipeline.java:515)
>                 at 
> org.apache.cocoon.components.pipeline.AbstractProcessingPipeli
> ne.process(AbstractProcessingPipeline.java:479)
>                 at 
> org.apache.cocoon.components.treeprocessor.sitemap.ReadNode.in
> voke(ReadNode.java:119)
>                 at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProce
> ssingNode.invokeNodes(AbstractParentProcessingNode.java:84)
>                 at 
> org.apache.cocoon.components.treeprocessor.sitemap.ActTypeNode
> .invoke(ActTypeNode.java:176)
>                 at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProce
> ssingNode.invokeNodes(AbstractParentProcessingNode.java:84)
>                 at 
> org.apache.cocoon.components.treeprocessor.sitemap.PreparableM
> atchNode.invoke(PreparableMatchNode.java:165)
>                 at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProce
> ssingNode.invokeNodes(AbstractParentProcessingNode.java:108)
>                 at 
> org.apache.cocoon.components.treeprocessor.sitemap.PipelineNod
> e.invoke(PipelineNode.java:163)
>                 at 
> org.apache.cocoon.components.treeprocessor.AbstractParentProce
> ssingNode.invokeNodes(AbstractParentProcessingNode.java:108)
>                 at 
> org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNo
> de.invoke(PipelinesNode.java:152)
>                 at 
> org.apache.cocoon.components.treeprocessor.TreeProcessor.proce
> ss(TreeProcessor.java:354)
>                 at 
> org.apache.cocoon.components.treeprocessor.TreeProcessor.proce
> ss(TreeProcessor.java:307)
>                 at org.apache.cocoon.Cocoon.process(Cocoon.java:656)
>                 at 
> org.apache.cocoon.servlet.CocoonServlet.service(CocoonServlet.
> java:1112)
>                 at 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>                 at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilt
> er(ApplicationFilterChain.java:247)
>                 at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(Appli
> cationFilterChain.java:193)
>                 at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardW
> rapperValve.java:256)
>                 at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:643)
>                 at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>                 at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>                 at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardC
> ontextValve.java:191)
>                 at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:643)
>                 at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>                 at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>                 at 
> org.apache.catalina.core.StandardContext.invoke(StandardContex
> t.java:2415)
>                 at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHost
> Valve.java:180)
>                 at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:643)
>                 at 
> org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDi
> spatcherValve.java:171)
>                 at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:641)
>                 at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReport
> Valve.java:172)
>                 at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:641)
>                 at 
> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValv
> e.java:509)
>                 at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:641)
>                 at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>                 at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>                 at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEn
> gineValve.java:174)
>                 at 
> org.apache.catalina.core.StandardPipeline$StandardPipelineValv
> eContext.invokeNext(StandardPipeline.java:643)
>                 at 
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipel
> ine.java:480)
>                 at 
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>                 at 
> org.apache.catalina.connector.http.HttpProcessor.process(HttpP
> rocessor.java:1040)
>                 at 
> org.apache.catalina.connector.http.HttpProcessor.run(HttpProce
> ssor.java:1151)
>                 at java.lang.Thread.run(Thread.java:534)
> 
> 
> Apache Cocoon 2.1.4-dev <http://cocoon.apache.org/>  
> 
> 
> 
> 
> > >2de question; I want the user to download the file, that
> > when teh user
> > >cliks the link, his browser opens a download dialog box so heb can 
> > >choose where to save the file.
> > >
> > >how do I do that?
> > 
> > To a large extent, that depends on the browser they're using
> > - for example, I have mine set to automatically download files to a 
> > specific folder without prompting.
> > 
> > More generally, though, if the browser has a plugin that can handle 
> > the returned mime type it will open it in that; otherwise it will 
> > download it.
> > There may also be a separate "download this link" option on the RMB 
> > popup menu to allow it to be saved rather than opened.
> > If you want to force files to be downloaded rather than handled by 
> > plugins, you could return application/octet-stream as the mime type 
> > instead of the actual value.
> 
> I use the following strategy, which should work for most browsers I
> believe:
> 
>                 <map:match pattern="download/*">
>        <map:act type="set-header">
>          <map:parameter name="Content-Type"
> value="application/x-download"/>
>          <map:parameter name="Content-Disposition" 
> value="attachment ; filename={1}"/>
> 
>          <map:read src="{global:datadir}{1}" />
>        </map:act>
>                 </map:match>
> 
> PS: {global:datadir} refers to a datadir element in 
> map:pipelines/map:component-configurations/global-variables
> 
> Kind regards,
> Geert
>   
> 
> Drs. G.P.H. Josten
> Consultant
> 
> 
> 
> Daidalos BV
> Source of Innovation
> Hoekeindsehof 1-4
> 2665  JZ  Bleiswijk
> Tel.: +31 (0) 10 850 1200
> Fax: +31 (0) 10 850 1199
> www.daidalos.nl
> KvK 27164984
> 
> 
> De informatie - verzonden in of met dit emailbericht - is 
> afkomstig van Daidalos BV en is uitsluitend bestemd voor de 
> geadresseerde. Indien u dit bericht onbedoeld hebt ontvangen, 
> verzoeken wij u het te verwijderen. Aan dit bericht kunnen 
> geen rechten worden ontleend.
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to