That really doesnt work, what ever i do in FF i get a 1kb file, the
conten being something like resource not found, somehow FF really
doesnt give you the  image out of the cache. (i guess no cache
settings in the headers are done at all by HP)

On 10/13/08, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> Right click on that image and click on Copy image and then past it
> somewhere like Gimp or Photoshop. :D
>
> Anyway, if you use a LoadableDetachableModel, it is possible and actually,
> recommended, to delete the file right after the download. Just make sure it
> is not a file that will be download several times. If this is the case,
> think on something else like a timer, to keep that file in disk for a while.
>
> Cheers,
> Bruno
>
> On Oct 13, 2008 10:17am, Johan Compagner <[EMAIL PROTECTED]> wrote:
>> Deleting a file right after a first download also has its problems,
>>
>> My HP network printer/scanner does that, i can scan to an image, but
>>
>> firefox displayes then that image and what ever i do then to save it
>>
>> to disk, i get nothing because FF seems to want to get it again for
>>
>> saving bu hp doesnt serve it anymore, i have to use IE7 for that to
>>
>> get my scanned image. HP really should do more testing! And serve the
>>
>> resource differently.
>>
>>
>>
>> On 10/13/08, Bruno Borges wrote:
>>
>> > I think is better to create a temporary file and set DownloadLink to
> delete
>>
>> > it after download is complete. I don't think is a good idea to let the
> user
>>
>> > download directly from the database as you proposed. See, downloads can
>> >
> take
>>
>> > some time and letting that InputStream open, might be a problem. The
> latency
>>
>> > of an external download is bigger than downloading from a local
> database.
>>
>> >
>>
>> > Cheers,
>>
>> > Bruno Borges
>>
>> > blog.brunoborges.com.br
>>
>> > +55 21 76727099
>>
>> >
>>
>> > "The glory of great men should always be
>>
>> > measured by the means they have used to
>>
>> > acquire it."
>>
>> > - Francois de La Rochefoucauld
>>
>> >
>>
>> >
>>
>> > On Fri, Oct 10, 2008 at 10:04 PM, Dane Laverty
>>
>> > wrote:
>>
>> >
>>
>> >> Thank you for the advice. Here's the solution I came up with, in case
>>
>> >> it's useful to anyone else.
>>
>> >>
>>
>> >> First I used the DownloadLink as a template for my "blobDownloadLink".
>>
>> >> Then I created an InputStreamResourceStream, which is essentially a
>>
>> >> barely modified version of Wicket's FileResourceStream, taking an
>>
>> >> InputStream as the constructor parameter instead of a File. The code
> for
>>
>> >> both of those is below.
>>
>> >>
>>
>> >> While this solution works, the two issues still hanging in my mind are:
>>
>> >> 1. I'm sure there's an easier way to get the InputStream into an
>>
>> >> IResourceStream than to create an InputStreamResourceStream class...I
>>
>> >> just couldn't figure out what it is.
>>
>> >> 2. When I get the Blob from the database like this,
>>
>> >>
>>
>> >> rs.getBinaryStream(1);
>>
>> >>
>>
>> >> the returned BinaryStream doesn't work. Doing this,
>>
>> >>
>>
>> >> java.sql.Blob blob = rs.getBlob(1);
>>
>> >> return blob.getBinaryStream();
>>
>> >>
>>
>> >> doesn't work either. So I ended up doing,
>>
>> >>
>>
>> >> java.sql.Blob blob = rs.getBlob(1);
>>
>> >> byte[] bytes = new byte[(int)blob.length()];
>>
>> >> try {
>>
>> >> blob.getBinaryStream().read(bytes);
>>
>> >> } catch (IOException ioe) {
>>
>> >> // handle it
>>
>> >> }
>>
>> >> return new ByteArrayInputStream(bytes);
>>
>> >>
>>
>> >> Not pretty, but it works.
>>
>> >>
>>
>> >> *******
>>
>> >> // Relevant code for blobDownloadLink
>>
>> >>
>>
>> >> Link blobDownloadLink = new Link("blobDownloadLink") {
>>
>> >> @Override
>>
>> >> public void onClick() {
>>
>> >> InputStream inputStream =
>>
>> >> //getBlobAsInputStreamFromDatabase();
>>
>> >>
>>
>> >> IResourceStream resourceStream =
>>
>> >> new InputStreamResourceStream(inputStream);
>>
>> >>
>>
>> >> getRequestCycle().setRequestTarget(new
>>
>> >> ResourceStreamRequestTarget(resourceStream)
>>
>> >> {
>>
>> >> public String
>>
>> >> getFileName()
>>
>> >> {
>>
>> >> return
>>
>> >> //theFileNameYouWantAssociatedWithThisDownload;
>>
>> >> }
>>
>> >>
>>
>> >> public void
>>
>> >> respond(RequestCycle requestCycle)
>>
>> >> {
>>
>> >>
>>
>> >> super.respond(requestCycle);
>>
>> >>
>>
>> >> }
>>
>> >> });
>>
>> >>
>>
>> >> try {
>>
>> >> inputStream.close();
>>
>> >> } catch (IOException ioe) {
>>
>> >> logger.error("Error
>>
>> >> attempting to close inputStream in blobDownloadLink.", ioe);
>>
>> >> }
>>
>> >> };
>>
>> >> };
>>
>> >>
>>
>> >> ********
>>
>> >> // Relevant code for InputStreamResourceStream
>>
>> >>
>>
>> >> import java.io.IOException;
>>
>> >> import java.io.InputStream;
>>
>> >> import org.apache.wicket.util.resource.AbstractResourceStream;
>>
>> >> import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
>>
>> >>
>>
>> >> /**
>>
>> >> * An InputStreamResourceStream is an IResource implementation for
>>
>> >> files.
>>
>> >> *
>>
>> >> * @see org.apache.wicket.util.resource.IResourceStream
>>
>> >> * @see org.apache.wicket.util.watch.IModifiable
>>
>> >> * @author Dane Laverty
>>
>> >> */
>>
>> >> public class InputStreamResourceStream extends AbstractResourceStream
>>
>> >> {
>>
>> >> private static final long serialVersionUID = 1L;
>>
>> >>
>>
>> >> /** Resource stream */
>>
>> >> private transient InputStream inputStream;
>>
>> >>
>>
>> >> /**
>>
>> >> * Constructor.
>>
>> >> *
>>
>> >> * @param inputStream
>>
>> >> * [EMAIL PROTECTED] InputStream} containing resource
>>
>> >> */
>>
>> >> public InputStreamResourceStream(InputStream inputStream)
>>
>> >> {
>>
>> >> this.inputStream = inputStream;
>>
>> >> }
>>
>> >>
>>
>> >> /**
>>
>> >> * Closes this resource.
>>
>> >> *
>>
>> >> * @throws IOException
>>
>> >> */
>>
>> >> public void close() throws IOException
>>
>> >> {
>>
>> >> if (inputStream != null)
>>
>> >> {
>>
>> >> inputStream.close();
>>
>> >> inputStream = null;
>>
>> >> }
>>
>> >> }
>>
>> >>
>>
>> >> /**
>>
>> >> * @see IResourceStream#getContentType()
>>
>> >> */
>>
>> >> public String getContentType()
>>
>> >> {
>>
>> >> // Let ResourceStreamRequestTarget handle content-type
>>
>> >> automatically
>>
>> >> return null;
>>
>> >> }
>>
>> >>
>>
>> >> /**
>>
>> >> * @return A readable input stream for this resource. The same
>>
>> >> input stream is returned until
>>
>> >> * InputStreamResourceStream.close() is
>>
>> >> invoked.
>>
>> >> *
>>
>> >> * @throws ResourceStreamNotFoundException
>>
>> >> */
>>
>> >> public InputStream getInputStream() throws
>>
>> >> ResourceStreamNotFoundException
>>
>> >> {
>>
>> >> if (inputStream == null)
>>
>> >> throw new
>>
>> >> ResourceStreamNotFoundException("InputStream could not be found");
>>
>> >>
>>
>> >> return inputStream;
>>
>> >> }
>>
>> >>
>>
>> >> }
>>
>> >>
>>
>> >>
>>
>> >> -----Original Message-----
>>
>> >> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
>>
>> >> Sent: Friday, October 10, 2008 3:37 PM
>>
>> >> To: users@wicket.apache.org
>>
>> >> Subject: Re: Downloading a BLOB
>>
>> >>
>>
>> >> i didnt say use the downloadlink, i said see how it works...
>>
>> >>
>>
>> >> -igor
>>
>> >>
>>
>> >> On Fri, Oct 10, 2008 at 3:32 PM, Dane Laverty
>>
>> >> wrote:
>>
>> >> > DownloadLink appears to accept only a file pathname. If I understand
>>
>> >> it
>>
>> >> > correctly, the only way I could use that would be to read the BLOB
>>
>> >> into
>>
>> >> > a file on the server, and then have the DownloadLink point to that
>>
>> >> file.
>>
>> >> > I believe that would require me to have the file created when the
> page
>>
>> >> > is generated, rather than when the link is clicked. Since there are
>>
>> >> > going to be many links on this page, I would rather be able to wait
>>
>> >> > until the user clicks the link to stream the BLOB to them.
>>
>> >> >
>>
>> >> > -----Original Message-----
>>
>> >> > From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
>>
>> >> > Sent: Friday, October 10, 2008 3:26 PM
>>
>> >> > To: users@wicket.apache.org
>>
>> >> > Subject: Re: Downloading a BLOB
>>
>> >> >
>>
>> >> > see how downloadlink works
>>
>> >> >
>>
>> >> > -igor
>>
>> >> >
>>
>> >> > On Fri, Oct 10, 2008 at 3:21 PM, Dane Laverty
>>
>> >> > wrote:
>>
>> >> >> The title basically says it all. I've got a BLOB in a database, and
>> >> >>
> I
>>
>> >> >> want the user to be able to click a link and download it. Any wicket
>>
>> >> >> solutions to do this? Thanks much.
>>
>> >> >>
>>
>> >> >>
>>
>> >> >>
>>
>> >> >>
>>
>> >> >
>>
>> >> > ---------------------------------------------------------------------
>>
>> >> > 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]
>>
>> >> >
>>
>> >> >
>>
>> >>
>>
>> >> ---------------------------------------------------------------------
>>
>> >> 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]
>>
>> >>
>>
>> >>
>>
>> >
>>
>>
>>
>> ---------------------------------------------------------------------
>>
>> 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