2017-07-19 2 views
0

in meinem zul ich benutze:Warum nicht den Upload-Befehl in ZK ausführen?

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

Und in Viewmodel Ich benutze diese:

@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); 
    } 
} 

Aber nicht den upload Befehl ausführen, wenn ich auf die Schaltfläche klicken und ein Bild auswählen ... es zeigt: C: \ fakepath \ desert.png zum Beispiel ... was kann ein Problem sein? Ich benutze Federsicherheit kann dies verursachen?

Antwort

0

Im Frühjahr Sicherheit xml Ich habe diese Zeilen hinzufügen:

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

versuchen diese Zeile in die Upload-Methode hinzu:

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

obigen Code wird die Datei auf Ihren webApp Ordner laden