Hello,

I've another little problem regarding download.
I use a RawScreen (Download.vm) and my files are stored in a MySql DB, 
in a BLOB field.
It does work when you only display the file, the problem raises when you 
try to save this file.

hereafter how i call that page:
            <a 
href="$link.setPage("Download.vm").addQueryData("attachid", 
"$Attachment.getId()")">$Attachment.getFilename()</A>

and here how is et the headers:

            resp.setContentType(_attach.getContenttype());
            resp.setContentLength(_attach.getContent().length);
            resp.setHeader("Content-Disposition", "attachment");
            resp.setHeader("filename", _attach.getFilename());

The name of the file becomes "Download", the realname is lost.

How is it possible to keep the name of the file.

Peter Goode wrote:

>John,
>Gotcha, I was trying to assign it as OutputStream..., presumably that was breaking
>it (?)
>
>Anyway, fixed now following your help... it's amazing how useful it is to be told
>what you've already read (manual blindness sets in after a while!)
>
>
>Is there a better file upload/download example than the TDK inbuilt app (newapp), as
>that doesn't have any working download at present,
>despite the upload. The attached code works ok.
>
>
>Thank you for your help.
>
>
>Peter
>
>John McNally wrote:
>
>>HttpServletResponse inherits the getOutputStream() method from
>>ServletResponse.
>>
>>Peter Goode wrote:
>>
>>>Hi,
>>>
>>>I've been trying to get an uploaded file to be sent back...
>>>
>>>PROBLEM:
>>>I can't get binary access to the output stream (from within subclass of
>>>RawScreen).
>>>
>>>I'm using the code below which is reproduced around various Turbine
>>>sites&mailing lists.
>>>However, .getOutputStream() doesn't actually exist, according to all
>>>documentation, and indeed
>>>it fails to work (although I've not got any debugging, just
>>>comment/uncomment and see what lives !)
>>>
>>>Is anything wrong with this..? (well yes) and why does everyone claim to
>>>use .getOutputStream() when it doesn't
>>>exist... ?
>>>
>>>If it can be made to work then the Tutorial should be updated, because
>>>there is no working download file
>>>in there at present.
>>>
>>>Cheers for your help
>>>
>>>Peter
>>>
>>>/*------/// code starts ///---------*/
>>>
>>>public class Download extends RawScreen
>>>{
>>>     public void doOutput(RunData data) throws Exception
>>>     {
>>>         if (!isAuthorized(data))
>>>         {
>>>            // do something to tell the user they don't have permission
>>>         }
>>>         else
>>>         {
>>>            data.declareDirectResponse();
>>>            FileInputStream file_tosend = new
>>>FileInputStream(TurbineServlet.getRealPath("/uploaded.file"));
>>>            BufferedInputStream buffer_data = new
>>>BufferedInputStream(file_tosend);
>>>            // OK to here
>>>
>>>            // these 3 would kill it
>>>            //OutputStream stream_out =
>>>data.getResponse().getOutputStream();
>>>            //BufferedOutputStream buffer_out = new
>>>BufferedOutputStream(stream_out);
>>>            //buffer_out.write(buffer_data.read());
>>>
>>>            // *** *** this one kills it, when enabled *** ***
>>>            //OutputStream a = data.getResponse().getOutputStream();
>>>
>>>            // Will work and do all this, provided the
>>>.getOutputStream() call isn't made YYY
>>>            // Documentation for RunData.getResponse() -->
>>>javax.servlet.http.HttpServletResponse
>>>            // shows that there is no .getOutputStream() method... what
>>>should be going on !?
>>>            String str = "test 9D";
>>>            PrintWriter out = data.getOut();
>>>            out.println(str);
>>>            out.flush();
>>>            file_tosend.close();
>>>         }
>>>     }
>>>
>>>     public String getContentType(RunData data)
>>>     {
>>>        return "text/html";
>>>        //return "image/jpeg";
>>>     }
>>>
>>>     protected boolean isAuthorized(RunData data)
>>>     {
>>>         // do the security check here.  Get whatever info you need
>>>         // about the user from RunData
>>>        return true;
>>>     }
>>>}
>>>/*------/// ends ///---------*/
>>>
>>>--
>>>To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
>>>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>>>
>>--
>>To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
>>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>>
>>
>>------------------------------------------------------------------------
>>
>>package org.mrexcessive.peter1.modules.screens;
>>
>>/* ====================================================================
>> * The Apache Software License, Version 1.1
>> *
>> * Copyright (c) 2001 The Apache Software Foundation.  All rights
>> * reserved.
>> *
>> * Redistribution and use in source and binary forms, with or without
>> * modification, are permitted provided that the following conditions
>> * are met:
>> *
>> * 1. Redistributions of source code must retain the above copyright
>> *    notice, this list of conditions and the following disclaimer.
>> *
>> * 2. Redistributions in binary form must reproduce the above copyright
>> *    notice, this list of conditions and the following disclaimer in
>> *    the documentation and/or other materials provided with the
>> *    distribution.
>> *
>> * 3. The end-user documentation included with the redistribution,
>> *    if any, must include the following acknowledgment:
>> *       "This product includes software developed by the
>> *        Apache Software Foundation (http://www.apache.org/)."
>> *    Alternately, this acknowledgment may appear in the software itself,
>> *    if and wherever such third-party acknowledgments normally appear.
>> *
>> * 4. The names "Apache" and "Apache Software Foundation" and 
>> *    "Apache Turbine" must not be used to endorse or promote products 
>> *    derived from this software without prior written permission. For 
>> *    written permission, please contact [EMAIL PROTECTED]
>> *
>> * 5. Products derived from this software may not be called "Apache",
>> *    "Apache Turbine", nor may "Apache" appear in their name, without 
>> *    prior written permission of the Apache Software Foundation.
>> *
>> * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
>> * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
>> * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
>> * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
>> * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>> * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>> * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
>> * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
>> * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
>> * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
>> * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
>> * SUCH DAMAGE.
>> * ====================================================================
>> *
>> * This software consists of voluntary contributions made by many
>> * individuals on behalf of the Apache Software Foundation.  For more
>> * information on the Apache Software Foundation, please see
>> * <http://www.apache.org/>.
>> */
>>
>>import java.util.Vector;
>>import java.io.FileInputStream;
>>import java.io.BufferedInputStream;
>>import java.io.BufferedOutputStream;
>>import java.io.OutputStream;
>>import java.io.PrintWriter;
>>import javax.servlet.ServletOutputStream;
>>
>>import org.apache.turbine.modules.screens.RawScreen;
>>import org.apache.turbine.util.RunData;
>>
>>import org.apache.turbine.util.db.Criteria;
>>import org.mrexcessive.peter1.om.RdfPeer;
>>import org.apache.turbine.util.upload.FileItem;
>>import org.apache.turbine.services.servlet.TurbineServlet;
>>
>>import org.apache.velocity.context.Context;
>>
>>/**
>>Send back the previously uploaded file, uses RawScreen via Download.vm (?possibly 
>wrong?)
>> */
>>public class Download extends RawScreen
>>{
>>     public void doOutput(RunData data) throws Exception
>>     {
>>         if (!isAuthorized(data))
>>         {
>>            // do something to tell the user they don't have permission
>>         }
>>         else
>>         {
>>            data.declareDirectResponse();
>>            FileInputStream file_tosend = new 
>FileInputStream(TurbineServlet.getRealPath("/uploaded.file"));
>>            ServletOutputStream op = data.getResponse().getOutputStream();
>>            int bufsize = 16384;
>>            byte [] buf = new byte[bufsize];
>>            while (file_tosend.available() > 0) {     // belt & braces ? why
>>               int got = file_tosend.read(buf,0,bufsize);
>>               if (got != -1) {
>>                  op.write(buf,0,got);
>>               }
>>               else {
>>                  break;
>>               }
>>            }
>>            op.flush();
>>         }
>>     }
>>     
>>     public String getContentType(RunData data)
>>     {
>>        return "image/jpeg";
>>     }
>>
>>     protected boolean isAuthorized(RunData data)
>>     {
>>         // do the security check here.  Get whatever info you need
>>         // about the user from RunData
>>        return true;
>>     }
>>}
>>
>>
>>------------------------------------------------------------------------
>>
>>--
>>To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
>>For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
>>

-- 

-- 
Fabio Daprile

W�rth-Phoenix Srl
Via Kravogl 4, I-39100 Bolzano
Tel: +39 0471/564111 - (direct 564070)
Fax: +39 0471/564122

mailto:[EMAIL PROTECTED]
http://www.wuerth-phoenix.com
http://www.wuerth.com



Reply via email to