Download"
From Documentation
m |
m |
||
Line 4: | Line 4: | ||
− | We usually perform file downloading through <javadoc>org.zkoss.zul.Filedownload</javadoc> when some events | + | We usually perform file downloading through <javadoc>org.zkoss.zul.Filedownload</javadoc> when some events are triggered <ref>for more detail, please refer to [[ZK_Component_Reference/Essential_Components/Filedownload]]</ref>. Following is a typical example of downloading a file: |
'''download.zul''' | '''download.zul''' |
Revision as of 08:06, 13 June 2012
Since 1.1.0
We usually perform file downloading through Filedownload when some events are triggered [1]. Following is a typical example of downloading a file:
download.zul
<zk>
<div apply="DownloadComposer">
<button id="btn" label="download" />
</div>
</zk>
DownloadComposer.java
public class DownloadComposer extends GenericForwardComposer {
@Listen("onClick=#btn")
public void download() throws IOException {
Filedownload.save("/hello.txt", "application/octet-stream");
}
}
The download mechanism is a process containing two steps. When you invoke save(), the Filedownload simply notifies ZK client engine of the download URL. Then, ZK client engine downloads such file according to the referred URL.
Notes
- ↑ for more detail, please refer to ZK_Component_Reference/Essential_Components/Filedownload
Download files in a ZATS Mimic test case
In order to simulate same behavior as ZK client engine doing, ZATS Mimic introduces the Resource interface. It represents a downloadable resource file at server. The typical steps for testing downloading are:
- perform some operations through operation agents
- check is there a downloadable resource through desktop agent
- fetch and verify the information or content of the resource
@Test
public void test() throws Exception {
DesktopAgent desktop = Zats.newClient().connect("/download.zul");
Assert.assertNull(desktop.getDownloadable());
desktop.query("#btn").click();
Resource resource = desktop.getDownloadable();
Assert.assertNotNull(resource);
Assert.assertEquals("hello.txt", resource.getName());
String content = fetchContent(resource.getInputStream());
Assert.assertEquals("Hello world!", content);
}
- Line 14-16: Because ZATS Mimic handles the response from ZK application automatically, we can get the current downloadable resource file from the DesktopAgent.getDownloadable(). The method might return null when getting the downloadable resource, it indicates that there is no downloadable resource after the previous operation.
- Line 17-19: We can get more information from Resource, or fetch the content of resource file in binary through the input stream.