可以限制文件大小,类型,支持中文,多文件上传,并且可以存到指定目录
直接上代码,有问题直接提
<?xml version="1.0" encoding="GBK"?>
<window>
<label value="test"></label>
<button label="upload">
<attribute name="onClick">
<![CDATA[
import org.zkoss.zk.ui.util.Configuration;
import java.io.*;
import org.zkoss.io.Files;
Desktop desktop = self.getDesktop();
Configuration conf = desktop.getWebApp().getConfiguration();
conf.setMaxUploadSize(1024);
//解决中文问题,如果上传的文件中有中文
conf.setUploadCharset("gbk");
//如果文本文件的话,返回的实际是AMedia类型
Object media = Fileupload.get();
//多文件
//Object[] mediaArray = Fileupload.get(5);
if(media!=null){
String fileName = media.getName();
if(!fileName.endsWith(".txt")){
alert("not a txt file");
return;
}
/**
* 用Reader的方式,实际是StringReader
*/
Reader r = media.getReaderData();
File f = new File("c:\\temp\\"+fileName);
/*
//可以获得相对路径
File f = new File(Executions.getCurrent().getDesktop().getWebApp().getRealPath("medias") + "/"+ media.getName());
*/
if(!f.exists()){
f.createNewFile();
}
//Files类是由ZK提供的
Files.copy(f,r,null);
Files.close(r);
/*
//用InputStream的实现方式
InputStream ins = new ByteArrayInputStream(media.getStringData().getBytes());
File f = new File("c:\\temp\\"+fileName);
if(!f.exists()){
f.createNewFile();
}
OutputStream out = new FileOutputStream(f);
byte[] buf=new byte[1024];
int len;
while((len=ins.read(buf))>0){
out.write(buf,0,len);
}
out.close();
ins.close();
*/
alert("file created");
}
//alert(media.getStringData().length());
//alert(media.getName());
]]>
</attribute>
</button>
<vbox id="file">
</vbox>
</window>
<window title="Fileupload Demo" border="normal">
<image id="image"/>
<button label="Upload">
<attribute name="onClick">{
Object media = Fileupload.get();
if (media instanceof org.zkoss.image.Image)
image.setContent(media);
else if (media != null)
Messagebox.show("Not an image: "+media, "Error",
Messagebox.OK, Messagebox.ERROR);
}
</attribute>
</button>
</window>
<window title="fileupload demo" border="normal">
<button label="Upload">
<attribute name="onClick"><![CDATA[{
Object media = Fileupload.get(5);
if (media != null)
for (int j = 0; j < media.length; ++j) {
if (media[j] instanceof org.zkoss.image.Image) {
Image image = new Image();
image.setContent(media[j]);
image.setParent(pics);
} else if (media[j] != null) {
Messagebox.show("Not an image: "+media[j], "Error",
Messagebox.OK, Messagebox.ERROR);
}
}
}]]>
</attribute>
</button>
<vbox id="pics"/>
</window>