为什么ZK中没有运行上传命令?

Why not run the upload command in ZK?

在我的 zul 中我使用:

<cell colspan="2">
   <button label="Upload image" upload="true" onUpload="@command('uploadImage', uploadEvent=event, window = editTranslation)"/>
</cell>

我在视图模型中使用了这个:

@Command
@NotifyChange({"leadImage", "uploadMessage"})
public void uploadImage(@BindingParam("uploadEvent") UploadEvent event, @BindingParam("window") Window win) {
    Clients.showBusy(win, "Képfeldolgozás ...");
    System.err.println("uploadimage");
    Media media = event.getMedia();
    if (media instanceof org.zkoss.image.Image) {
        saveImageToDisk(media);
        Clients.clearBusy(win);
    } else {
        Clients.clearBusy(win);
        Messagebox.show("Ez nem egy kép: "+media, "Error", Messagebox.OK, Messagebox.ERROR);
    }
}

但不是 运行 uploadImage 命令,如果我单击按钮并选择图像...它显示:例如 C:\fakepath\desert.png...可能有什么问题?我使用 spring 安全会导致这个吗?

在 spring 安全性 xml 中,我必须添加以下行:

    <headers>
        <frame-options policy="SAMEORIGIN"/>
    </headers>

尝试将这些行添加到您的上传方法中:

String webAppPath = Executions.getCurrent().getDesktop().getWebApp().getRealPath("/") + "\";
String filePath = webAppPath + media.getName();
Files.copy(new File(filePath), media.getStreamData());

以上代码会将您的文件上传到您的 webApp 文件夹