zk fileupload

可以限制文件大小,类型,支持中文,多文件上传,并且可以存到指定目录
直接上代码,有问题直接提

<?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>
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值