here you are: https://github.com/solomax/ajax-download Absolutely don't understand what is going on :(
On Wed, Mar 29, 2017 at 6:30 PM, Maxim Solodovnik <[email protected]> wrote: > Yep, zip file is valid > Breakpoint at AjaxDownload.ResourceBehavior#onRequest() is not hit :( > Will try to create quickstart > > something extremely weird > > On Wed, Mar 29, 2017 at 2:22 AM, Martin Grigorov <[email protected]> wrote: >> Hi Maxim, >> >> On Tue, Mar 28, 2017 at 11:06 AM, Maxim Solodovnik <[email protected]> >> wrote: >> >>> Thanks a lot Martin for detailed explanation >>> I do have this functionality working with old version of AjaxDownload >>> >>> And here is my first try to migrate to the new internal wicket >>> AjaxDownload: >>> https://github.com/apache/openmeetings/commit/ >>> 5fa2c87f212e4eecdd1368f2ae7fa8762832838f >>> >>> I would appreciate if you can take a look at this tiny commit. >>> >>> Something really doesn't work as expected .... >>> >>> Commited version behaves wrong: >>> 1) file downloaded has wrong name >>> >> >> You do not set file name anywhere! >> Keep a reference to the constructed ResourceResponse and call its >> #setFileName(...) >> >> >>> 2) is not valid zip file (cannot be opened) >>> >> >> Is the backupPath representing a ZIP file ? >> >> >>> 3) for some reason I'm not able to get to breakpoint at line 115 [1] >>> >> >> Put a breakpoint at AjaxDownload.ResourceBehavior#onResourceRequested() and >> see what happens >> >> >>> >>> Additionally I got NotSerializable exception in case I made "download" >>> class final variable >>> >> >> java.nio.file.Path is not Serializable! >> >> >>> >>> What am I doing wrong? >>> >>> [1] https://github.com/apache/openmeetings/commit/ >>> 5fa2c87f212e4eecdd1368f2ae7fa8762832838f#diff- >>> 0a499c88998a93ceb51c347836aa6195R115 >>> >>> On Thu, Mar 23, 2017 at 3:16 AM, Martin Grigorov <[email protected]> >>> wrote: >>> > On Wed, Mar 22, 2017 at 12:59 PM, Maxim Solodovnik <[email protected] >>> > >>> > wrote: >>> > >>> >> Actually I have 2 example use cases: >>> >> >>> >> 1) user selects files on file tree >>> >> 2) as soon as file is selected and download is enabled for it, used can >>> >> press ajax download button and get the file >>> >> >>> >> Another case: >>> >> User requests system backup >>> >> As soon as backup is created (Progress complete) >>> >> Download of newly created file should be initiated >>> >> >>> >> I can't create ResourceReference and override getResourceStream of it >>> since >>> >> I only have resource just before download >>> >> >>> > >>> > Wicket IResource is an abstraction over the real resource. >>> > In my case i also create the response on the fly. It is either a single >>> > File or a Zip file with several entries. >>> > The ResourceReference is more or less just an endpoint with almost no >>> logic >>> > at all. It just creates the IResource. >>> > The IResource uses the information from the request parameters / session >>> / >>> > somewhere else to create the actual response (the files). >>> > >>> > AjaxDownload is an Ajax behavior that you can use to trigger the creation >>> > of the files and by using its callback methods you can show feedback to >>> the >>> > user. To show progress bar you will need to employ ProgressBar from >>> > wicket-extentions or use WebSockets. >>> > >>> > >>> >> >>> >> On Wed, Mar 22, 2017 at 6:53 PM, Martin Grigorov <[email protected]> >>> >> wrote: >>> >> >>> >> > Hi Maxim, >>> >> > >>> >> > I use the new AjaxDownload with a ResourceReference, i.e. >>> >> > AjaxDownload#AjaxDownload(org.apache.wicket.request. >>> >> > resource.ResourceReference, >>> >> > org.apache.wicket.request.mapper.parameter.PageParameters) >>> >> > The ResourceReference has >>> >> > >>> >> > public IResource getResource() { >>> >> > return new StatementDownloadResource(); >>> >> > } >>> >> > >>> >> > StatementDownloadResource extends ResourceStreamResource and provides >>> >> > implementation of #getResourceStream(). There I have a logic that >>> returns >>> >> > either FileResourceStream or ZipResourceStream. >>> >> > >>> >> > Martin Grigorov >>> >> > Wicket Training and Consulting >>> >> > https://twitter.com/mtgrigorov >>> >> > >>> >> > On Wed, Mar 22, 2017 at 12:30 PM, Maxim Solodovnik < >>> [email protected] >>> >> > >>> >> > wrote: >>> >> > >>> >> > > Just have tried to switch to this AjaxDownload component >>> >> > > And it seems I cannot find proper way to use it with dynamic file, >>> i.e. >>> >> > > >>> >> > > previously >>> >> > > I created AjaxDownload, >>> >> > > added it to the page >>> >> > > then at the moment I know what file should be served, I set the >>> stream >>> >> > and >>> >> > > initiate the download >>> >> > > (for example one of use cases: I need to create zip file >>> >> > > >>> >> > > right now this seems to be impossible :( >>> >> > > Can you give me a hint how this dynamic nature can be implemented? >>> >> > > >>> >> > > >>> >> > > -- >>> >> > > WBR >>> >> > > Maxim aka solomax >>> >> > > >>> >> > >>> >> >>> >> >>> >> >>> >> -- >>> >> WBR >>> >> Maxim aka solomax >>> >> >>> >>> >>> >>> -- >>> WBR >>> Maxim aka solomax >>> > > > > -- > WBR > Maxim aka solomax -- WBR Maxim aka solomax
