2013-09-25 136 views
0

我需要上传CSV文件ZK 这是我ZUL页面:与ZK框架上传文件

<zk> 
<window 
    apply="org.zkoss.bind.BindComposer" 
    viewModel="@id('vm') @init('UploadVM')" 
    title="win" 
    position="center" 
    mode="overlapped" 
    border="normal" 
    width="300px" 
    height="200px"> 
    <button 
     label="upload" 
     upload="true,maxsize=801192" 
     onUpload="@command('uploadFile',upload=event)" 
     autodisable="self" /> 

</window> 
</zk> 

而且我的Java页面:

public class UploadVM { 
    private Media media; 
    public Media getMedia(){ 
     return media; 
    } 
    @NotifyChange("media") 
    @Command 
    public void uploadFile(@ContextParam(ContextType.TRIGGER_EVENT) UploadEvent event) { 
     media = event.getMedia(); 
     media.getStreamData(); 
    } 

但是这个简单的例子,我有以下错误:

Use getStringData() instead 

而我不知道会发生什么。

谁能帮帮我?

回答

0

在从中获取数据之前,您应该知道媒体的格式。 根据documentation媒体数据可以是binarytext-based格式。要检索其内容,您应该在前一种情况下使用getByteData()getStreamData(),在后者中应使用getStringData()getReaderData()。例如,

media = event.getMedia(); 
if (media.isBinary()) { 
    InputStream is = media.getStreamData(); 
} else { 
    String s = media.getStringData(); 
} 
+0

如果我有一个csv文件,每行读取行数,我做什么?,因为我需要getstream数据或不? – user2768380

+0

@ user2768380使用'media.getReaderData()'并用'BufferedReader'封装结果读取器 –

0

我上传csv文件,我的东西它 将帮助您更好地了解一个最好的例子dropupload

index.zul

<?page title="Auto Generated index.zul"?> 
<window title="Drop here" border="normal" width="100%" height="100%" 
    apply="org.zkoss.bind.BindComposer" 
    viewModel="@id('vm') @init('com.demo.DropFileViewModel')"> 

    <dropupload maxsize="5120" detection="none" 
     onUpload="@command('doUpload')"> 
    </dropupload> 

    <button label="Download" onClick="@command('doDownload')"></button> 


</window> 

DropFileViewModel.java

package com.demo; 

import org.zkoss.bind.BindContext; 
import org.zkoss.bind.annotation.Command; 
import org.zkoss.bind.annotation.ContextParam; 
import org.zkoss.bind.annotation.ContextType; 
import org.zkoss.util.media.Media; 
import org.zkoss.zhtml.Filedownload; 
import org.zkoss.zk.ui.event.UploadEvent; 
import org.zkoss.zul.Messagebox; 

public class DropFileViewModel { 
    Media media; 

    @Command 
    public void doUpload(@ContextParam(ContextType.BIND_CONTEXT) BindContext ctx) { 
     UploadEvent upEvent = null; 
     Object objUploadEvent = ctx.getTriggerEvent(); 
     if (objUploadEvent != null && (objUploadEvent instanceof UploadEvent)) { 
      upEvent = (UploadEvent) objUploadEvent; 
     } 
     if (upEvent != null) { 
      media = upEvent.getMedia(); 
      Messagebox.show("File Uploaded: " + media.getName()); 

     } 
    } 

    @Command 
    public void doDownload() { 
     if (media != null) 
      Filedownload.save(media); 
     else 
      Messagebox.show("First Drop Your File"); 

    } 
} 

check here

感谢

0

这是我的生成PDF文档解决方案:

@Command 
@NotifyChange("savePDF") 
public void savePDF() throws IOException, Exception { 

File f = new File("PDF_test.pdf"); 
OutputStream file = new FileOutputStream(f); 

Document document = new Document(); 
PdfWriter.getInstance(document, file); 

Filedownload.save(f, "application/pdf"); 

PdfPTable table=new PdfPTable(3); 
PdfPCell cell ..... 
}