Hello All, I have updated my project https://github.com/solomax/ajax-download/commit/453663a55f390e54354381ab0f009d194e37e87c To set filename But file being downloaded has random UUID as file name, what am I doing wrong?
On Wed, Mar 29, 2017 at 9:31 PM, Maxim Solodovnik <[email protected]> wrote: > Will try to migrate all my use cases on a SNAPSHOT first > Then will do > Thanks Martin! > > On Wed, Mar 29, 2017 at 9:28 PM, Martin Grigorov <[email protected]> > wrote: > > Maxim, you can use Location.IFrame or Location.SameWindow too in -M5 (to > be > > released!). > > > > Martin Grigorov > > Wicket Training and Consulting > > https://twitter.com/mtgrigorov > > > > On Wed, Mar 29, 2017 at 4:26 PM, Sven Meier <[email protected]> wrote: > > > >> In a minute :P > >> > >> Sven > >> > >> > >> > >> On 29.03.2017 16:15, Andrea Del Bene wrote: > >> > >>> Right when we will return to "success" :-) > >>> > >>> https://ci.apache.org/builders/wicket-master > >>> > >>> On Wed, Mar 29, 2017 at 4:07 PM, Maxim Solodovnik < > [email protected]> > >>> wrote: > >>> > >>> Wow, Thanks a lot! > >>>> Could you please let me know when SNAPSHOT with the fix will be > >>>> available? > >>>> > >>>> On Wed, Mar 29, 2017 at 8:50 PM, Sven Meier <[email protected]> wrote: > >>>> > >>>>> Hi, > >>>>> > >>>>> so we have to change the Location.Blob to use XMLHttpRequest > directly, > >>>>> because jQuery does not support blob downloads :/. > >>>>> > >>>>> I've change the JavaScript and now downloading of the zip works fine. > >>>>> > >>>>> FileSystemResource might not be the best candidate (because it's not > >>>>> serializable), but you can use an indirection to prevent it being > >>>>> > >>>> serialized > >>>> > >>>>> along with AjaxDownload: > >>>>> > >>>>> final AjaxDownload download = new AjaxDownload( > >>>>> new IResource() > >>>>> { > >>>>> @Override > >>>>> public void respond(Attributes attributes) > >>>>> { > >>>>> new > >>>>> FileSystemResource(zipFile.toPath()).respond(attributes); > >>>>> } > >>>>> } > >>>>> ); > >>>>> > >>>>> Have fun > >>>>> Sven > >>>>> > >>>>> > >>>>> > >>>>> On 29.03.2017 15:12, Maxim Solodovnik wrote: > >>>>> > >>>>>> Filename is minor issue .... > >>>>>> Main problem is invalid file :( > >>>>>> > >>>>>> How can I serve the file from file system? I thought > >>>>>> filesystemreference > >>>>>> if > >>>>>> the best candidate ..... > >>>>>> > >>>>>> WBR, Maxim > >>>>>> (from mobile, sorry for the typos) > >>>>>> > >>>>>> On Mar 29, 2017 8:08 PM, "Sven Meier" <[email protected]> wrote: > >>>>>> > >>>>>> Hi Maxim, > >>>>>>> > >>>>>>> three things: > >>>>>>> > >>>>>>> - filename ... no one sets the file name :P > >>>>>>> > >>>>>>> - serializable error ... FileSystemResource holds a reference to > the > >>>>>>> path, > >>>>>>> which is not serializable > >>>>>>> > >>>>>>> - corruct zip ... my bad, it seems that Location.Blob mangles the > file > >>>>>>> > >>>>>> on > >>>> > >>>>> the client side > >>>>>>> > >>>>>>> I'll see what I can do about Location.Blob - it might be an > encoding > >>>>>>> issue. > >>>>>>> > >>>>>>> Have fun > >>>>>>> Sven > >>>>>>> > >>>>>>> > >>>>>>> On 29.03.2017 14:15, Maxim Solodovnik wrote: > >>>>>>> > >>>>>>> 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 > >>>> > >>>> > >> > > > > -- > WBR > Maxim aka solomax > -- WBR Maxim aka solomax
