ZK 文件上传,分文本文件与其他类型的文件

来源:互联网 发布:mac csgo打开黑屏 编辑:程序博客网 时间:2024/05/17 15:37

第一种 全部在 ZUL 页面实现

<?page title="new page title" contentType="text/html;charset=UTF-8"?><zk><window title="" border="normal"> <button label="upload">  <attribute name="onClick"> <![CDATA[ import org.zkoss.zk.ui.util.Configuration;  import org.zkoss.io.Files;  import java.io.Reader;  import java.io.File; Desktop desktop = self.getDesktop();  org.zkoss.zk.ui.util.Configuration conf = desktop.getWebApp().getConfiguration(); conf.setMaxUploadSize(1024);//解决中文问题,如果上传的文件中有中文conf.setUploadCharset("utf-8");//如果文本文件的话,返回的实际是AMedia类型 Object media = Fileupload.get(); //多文件 //Object[] mediaArray = Fileupload.get(5); if(media!=null){String fileName = media.getName(); if(fileName.endsWith(".txt")){// 上傳text文件Reader r = media.getReaderData(); File f = new File("F:\\"+fileName); if(!f.exists()){f.createNewFile();}//Files类是由ZK提供的Files.copy(f,r,null);Files.close(r); alert("file created");  }else{ long intRet = 0; java.io.FileOutputStream os = new java.io.FileOutputStream("F:\\"+fileName);int bytesRead = 0;byte[] buffer = new byte[1024];java.io.InputStream ins = media.getStreamData();while ((bytesRead = ins.read(buffer, 0, 1024)) != -1) {os.write(buffer, 0, bytesRead);intRet += bytesRead;}os.flush();os.close();ins.close();alert("file created success");   }  }]]></attribute></button> <vbox id="file"> </vbox></window></zk>


第二种,调用java文件

zul 页面

<?page title="new page title" contentType="text/html;charset=UTF-8"?><zk><window id="winImport" border="normal" use="com.mytest.Import"><button width="80px" label="Upload"id="btnUpload" upload="true">  <attribute name="onUpload">{org.zkoss.util.media.Media media = event.getMedia();
                winImport.uploadFileMedia(media);
} </attribute></button> </window></zk>

java文件

package com.mytest;import org.zkoss.util.media.Media;import org.zkoss.zul.Messagebox;import org.zkoss.io.Files; import com.sae.zksys.zk.util.MyMessagebox;import com.sae.zksys.zk.util.MyWindow;import java.io.File;import java.io.Reader;import java.net.MalformedURLException;import jcifs.smb.SmbException;public class Import extends MyWindow{public void uploadFileMedia(Object fileMedia) throws MalformedURLException, SmbException {if (fileMedia != null) {Media media = (Media) fileMedia;String fileName = media.getName();String path = System.getProperty("catalina.home"); String filePath=path+ "/TempFiles"; //文件保存路徑java.io.File file = new java.io.File(filePath);if (!file.exists()){file.mkdir();}filePath=filePath+"/" + fileName;if(!fileName.endsWith(".xls")){ Messagebox.show("只能上傳.xls文件!","ERROR",Messagebox.OK, Messagebox.ERROR);return;  }java.io.File filex = new java.io.File(filePath);if(filex.exists()){MyMessagebox.warn("Failed! " + fileName + " 該文件已經存在!");return ;}long size = uploadFile(filePath, media);MyMessagebox.info("文件上傳成功!");if (size > 0) { // upload successfile=new File(filePath);long len=file.length();//file.delete();//文件刪除int ret=XlsUtil4Spreadsheet.insertRow(filePath,fileName,len);MyMessagebox.info(String.valueOf(ret));if(ret==0){Messagebox.show("保存日誌文件出錯!","ERROR",Messagebox.OK, Messagebox.ERROR);return ;}}}}public static long uploadFile(String filePath, Media media) {long intRet = 0;try {if (media.getContentType().toLowerCase().startsWith("text")) {Reader r = media.getReaderData();File f = new File(filePath);if (!f.exists()) {f.createNewFile();}Files.copy(f, r, null);Files.close(r);intRet = f.length();} else {java.io.FileOutputStream os = new java.io.FileOutputStream(filePath);int bytesRead = 0;byte[] buffer = new byte[1024];java.io.InputStream ins = media.getStreamData();while ((bytesRead = ins.read(buffer, 0, 1024)) != -1) {os.write(buffer, 0, bytesRead);intRet += bytesRead;}os.flush();os.close();ins.close();}} catch (Exception e) {String msg = "Failed to upload " + filePath;throw new RuntimeException(msg);}return intRet;}}


0 0
原创粉丝点击