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]