上传与下载也是非常常用的功能,自己实作 ajax 处理也是挺麻烦的。ZK 提供简单的方式就可以启用。
<dropupload>
是专用上传元件,可显示一个区域,让使用者将图片拖放至该区域之後,发出 onUpload 事件,我们再注册倾听器来处理上传档案。
<image id="img" />
<dropupload maxsize="-1" content="拖放上传图片" detection="none" onUpload="img.setContent(event.media)" />
以下几个元件内建上传功能,只要启动即可:
启动步骤如下:
upload="true"
onUpload
事件倾听器。<zscript>
void upload(UploadEvent event) {
org.zkoss.util.media.Media media = event.getMedia();
if (media instanceof org.zkoss.image.Image) {
org.zkoss.zul.Image image = new org.zkoss.zul.Image();
image.setContent( (org.zkoss.image.Image) media);
image.setParent(pics);
} else {
Messagebox.show("Not an image: "+media, "Error", Messagebox.OK, Messagebox.ERROR);
}
}
</zscript>
<button label="上传" upload="true" onUpload="upload(event)"/>
<vlayout id="pics"/>
onUpload
事件倾听器的传入参数是 UploadEvent
new org.zkoss.zul.Image()
upload
属性可以设定额外的选项来控制上传行为,例如限制档案大小、是否允许一次上传多个档案、允许的档案类型等,详细请查看 Javadoc。
如果你想在上述所列元件以外的其他元件启用上传功能怎麽办呢?可以呼叫 API 来开启上传对话框,因此可以透过任何一个事件来触发上传功能。
例如我可以放一个上传图示,当使用者点击就开启上传:
<a iconSclass="z-icon-upload" style="font-size: 32px; border: 2px solid; padding: 5px;"
apply="quickstart.UploadComposer"/>
@Listen(Events.ON_CLICK+ "= a")
public void handleUpload(MouseEvent e) {
Fileupload.get(1, new EventListener<UploadEvent>() {
public void onEvent(UploadEvent event) throws Exception {
Media[] medias = event.getMedias();
System.out.println("upload " + medias[0].getName());
}
});
}
Fileupload.get()
就会开启一个上传对话框,传入一个倾听器来处理 onUpload
事件
下载直接呼叫 Filedownload.save()
即可,因为是从服务器端传资料,因此你甚至可以指定 /WEB-INF
下的目录:
<button label="下载"
onClick='Filedownload.save("/WEB-INF/zklogo.png", null);'/>
今晚来点轻松的。资料视觉化,复习一下DataFrame、seaborn 引用资料来源:country...
上一篇有提到激励函数,但只了解到用来引入非线性资料。可是什麽是非线性资料?sigmoid, ta...
还记得便利贴专案做到哪了吗?专案目前用的架构模式是 MVVM :Jetpack Compose 所做...
细数一下之前实作的API功能,有建立订单以及选择支付方式(ATM虚拟帐号、信用卡付款),拿到永丰AP...
不要成为小蜜蜂 解决Patterns,不要只被单点event触发 身为产品经理,我们有一项任务是为了...