Hallo zusammen,
ich würde gerne Bilder, welche ich per <tr:inputFile hochlade, direkt wieder anzeigen lassen.
Dazu habe ich folgenden Code:
in der jspx sieht das dann wie folgt aus:
janz rudimentär, wie man sieht (ich hab das mal von meinem richtigen Problem abstrahiert).
Wenn ich jetzt ein Bild hochlade, wird es nicht direkt geändert. erst nach dem neuen deployment des weblogicservers (bzw. live läuft tomcat) kann ich die bilder on-the-file ansteuern.
Ich vermute, dass die "neuen" bilder, nur im lokalen Verzeichnis liegen, nicht aber im Cache des WLS'.
Kann sowas hinkommen?
Wie gesagt, nach dem deployen kann ich die vorhanden Bilder beliebig oft wechseln, wenn sie schon mal "online" waren.
Danke
ich würde gerne Bilder, welche ich per <tr:inputFile hochlade, direkt wieder anzeigen lassen.
Dazu habe ich folgenden Code:
Java:
package test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.IOException;
import java.util.ArrayList;
import javax.faces.event.ValueChangeEvent;
import org.apache.myfaces.trinidad.model.ChildPropertyTreeModel;
import org.apache.myfaces.trinidad.model.UploadedFile;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import org.apache.myfaces.trinidad.model.UploadedFile;
public class bt {
private String img = "/img/flagge_de.jpg";
public void setImg(String img) {
this.img = img;
}
public String getImg() {
return img;
}
public void upload(ValueChangeEvent vc) throws IOException {
UploadedFile file = (UploadedFile)vc.getNewValue();
String save = "";
String[] filenameArray = new String[6];
if (file != null) {
int n = 0;
InputStream is = file.getInputStream();
File f = new File("D:\\uni\\SS10\\webdev\\testJSF\\Project1\\public_html\\img");
if (!f.isDirectory())
f.mkdir();
String dir = "D:\\uni\\SS10\\webdev\\testJSF\\Project1\\public_html\\img" ;
String fileName = file.getFilename();
save = dir + (File.separator) + fileName;
FileOutputStream fos = new FileOutputStream(save);
img = "/img/" + fileName;
this.setImg(img);
System.out.println(img);
try {
//die Datei wird auf den Server geschrieben
while ((n = is.read()) >= 0)
fos.write(n);
} catch (IOException e) {
System.out.println("Error: " + e.getMessage());
e.printStackTrace();
}
}
}
}
HTML:
<tr:form usesUpload = "true">
<tr:inputFile label = "Upload demo" valueChangeListener= "#{bt.upload}"/>
<tr:commandButton text="Go"/>
</tr:form>
<tr:image source="#{bt.img}"/>
janz rudimentär, wie man sieht (ich hab das mal von meinem richtigen Problem abstrahiert).
Wenn ich jetzt ein Bild hochlade, wird es nicht direkt geändert. erst nach dem neuen deployment des weblogicservers (bzw. live läuft tomcat) kann ich die bilder on-the-file ansteuern.
Ich vermute, dass die "neuen" bilder, nur im lokalen Verzeichnis liegen, nicht aber im Cache des WLS'.
Kann sowas hinkommen?
Wie gesagt, nach dem deployen kann ich die vorhanden Bilder beliebig oft wechseln, wenn sie schon mal "online" waren.
Danke