1

我需要在 ZK 中上传 csv 文件,这是我的 zul 页面:

<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

我不知道会发生什么。

谁能帮我???

4

3 回答 3

1

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

media = event.getMedia();
if (media.isBinary()) {
    InputStream is = media.getStreamData();
} else {
    String s = media.getStringData();
}
于 2013-09-25T20:29:33.387 回答
0

我有一个dropupload上传csv文件的最佳示例,它会帮助您更好地理解。

索引.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");

    }
}

在这里检查

谢谢

于 2013-09-27T17:08:54.513 回答
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 .....
}
于 2016-10-11T14:10:41.780 回答