Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich habe eine in PHP entwickelte Webseite die ausschließlich im Intranet läuft (Sicherheitszone: lokales Intranet oder Vertrauenswürdige Sites).
Nun ermittele ich mit PHP eine Liste von Dateien (PDF, Word, Excel, MSG, etc.) und möchte diese gerne in dem dafür lokal hinterlegten Programm öffnen (auf Click-Ereignis). Die Dateien liegen auf dem Webserver, nicht lokal unter C:\ oder sowas..
Hat jemand einen Tipp für mich, ob sowas überhaupt mit Java geht und vielleicht ein Beispiel..
wenn ich das richtig verstehe hast du dann eine website auf der zb eine tabelle ist in der geordnet typ, name, speicherort, etc verfügbar sind.
vorweg: das hat egtl nichts mit java zu tun (du meinst wahrscheinlich JavaScript) und gehört deshalb in ein anderes Subforum.
naja, hiervon ausgehen gibt es mehrere möglichkeiten dein problem zu lösen:
da du das teil in php hast gehe ich davon aus, dass du dich damit auskennst.
die einfache möglichkeit ist das downloaden der datei auf den client und dann das manuelle öffnen.
dann wäre die wahrscheinlich komplizierteste lösung mit php, wenn du fsockopen benutzt. aber dann musst du im prinzip ein programm auf dem server haben der es öffnet..
in javascript bin ich nicht weit genug drin um dir da hilfe zu geben aber sollte es solche möglichkeiten egtl geben.
Wenn es sich um JavaScript handelt (mal sehen was der OP dazu sagt), dann gehört es nicht nur in ein anderes Subforum, sondern in ein komplett anderes Board. Der 'Für Verirrte' Bereich ist nur ein Auffangbecken für eben solche, Verirrte.
Nein, es geht nicht um Javascript. Das "Click-Ereignis" habe ich erwähnt, weil ich über einen Hyperlink ("a href") das Java-Applet aufrufen möchte. Dem Applet übergebe ich dann die benötigten Infos (Pfad, Datei-Typ, etc.) und mit dem mir noch nicht bekannten Java-Aufruf soll die Datei dann lokal (!) geöffnet werden.
Mit Javascript habe ich nicht die Möglichkeit ein lokal installiertes Programm zu starten. Wäre auch seltsam, wenn das funktionieren würde (aus Sicherheitsgründen).
Mit fsockopen (PHP) wird es ziemlich schwierig, da ich so noch ca. 17 (grob geschätzt ) andere Programme schreiben muss, dass die Datei auch im dafür vorgesehen Programm geöffnet wird.
Mir geht es darum, dass der Anwender die Datei nicht erst herunterlädt, sondern ohne Nachfrage die Datei geöffnet wird. Und am besten in dem Programm, was der jeweilige User dafür lokal hinterlegt hat.
Falls auch in Java dafür spezielle Sicherheitsrichtlinien nötig sind, kann ich diese ohne weiteres durchsetzen (wie gesagt, Intranet).
Bin gerade das erste mal mit Eclipse ein bisschen am testen.
Kannst du/Ihr mir evtl. einen Tipp geben, wie ich per "Click" das Applet aufrufe bzw. eine Funktion daraus. Habe mir eine einfache Test-Klasse gebaut:
Code:
import java.applet.Applet;
import java.awt.*;
@SuppressWarnings("serial")
public class Test2 extends Applet {
/**
*
*/
//private static final long serialVersionUID = 1L;
@Override
public void init () {
String pathToFile = getParameter("PathToFile");
System.out.println( pathToFile + " - so einfach ist das!" );
}
}
Schau in die Java Konsole, dort solltest du eine Exception finden. Ausserdem bevor du im Browser testest unbedingt den Java Cache abschalten, sonst nimmt er häufig eine alte gecachte Variante anstatt die mit deinen neusten Änderungen.
Führt zu schwierig zu findenden Fehlern.
Die Java Console hat geholfen! Lag aber an einem, aus meiner Sicht, dämlichen Problem. Ich bekomme es nicht hin, dass die Java-Classes aus einem Unterverzeichnis gelesen wird. Geht nur, wenn die class-Datei direkt im Hauptverzeichnis liegt. Nun gut.
Zu dem (J)Button: So wie ich das bis jetzt verstanden habe, müsste ich dann die Liste der "Links" in Java zusammenbauen bzw. ausgeben. Jetzt kommen die "Links" allerdings aus einer Datenbank und ich will ungerne noch in Java die DB-Anbindung machen und die ganze Logik ein zweites mal abbilden.
Gibt es keine Möglichkeit, dass ich mit PHP HTML-Code "generiere" und dann mit Hilfe eines HTML-Links das Java-Applet anspreche?
ich hab jetzt schon ein bisschen was rausbekommen.
Ich habe ein Applet mit lediglich einer Funktion mit der ich auch schon lokale Dateien öffnen kann. Allerdings bekomme ich es ums Verrecken nicht hin, eine Datei vom Webserver zu öffnen (z.B.: http://localhost/blub/blub.txt).
function openJavaFile(path){
document.appopen.openFile(path);
}
Mein Java-Applet ist folgendes:
Code:
public void openFile (String p_path) {
String pathToFile = p_path;
File file = null;
URL fileURL = null;
Desktop desktop = null;
JOptionPane.showMessageDialog(null, "Die ersten 3 >" + pathToFile.trim().substring(0, 4) + "<-- so sieht es aus!", "INFO", JOptionPane.OK_CANCEL_OPTION);
if (pathToFile.trim().substring(0, 4) == "http") {
try {
fileURL = new URL(pathToFile);
file = new File(fileURL.getFile());
System.out.print("Das kam raus: " + file.toString());
} catch (Exception e1) {
System.out.print("Bei URL-Convert \n" + e1.getMessage());
}
} else {
file = new File(pathToFile);
System.out.print("Das sind die ersten 3: >" + pathToFile.trim().substring(0, 4) + "<-");
}
try {
desktop = Desktop.getDesktop();
desktop.open(file);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Die Datei " + pathToFile + " konnte nicht geöffnet werden \n" + e.getMessage(), "Fehler beim Öffnen", JOptionPane.OK_CANCEL_OPTION);
}
}//ENDE function..
Die IF-Abfrage trifft nie zu, obwohl in der Message-Box nur http steht. Das verstehe ich nicht!
Wenn ich die IF-Abfrage raus nehme und den else-Block auskommentiere macht er aus meinem Testlink "http://localhost/db_zeit/testnachricht.msg" -> \db_zeit\testnachricht.msg. Und diese Datei kanner nicht finden (doesn't exist).
Wie bekomme ich Ihn dazu, auch die Datei über http zu öffnen? Habs auch schon mit URI probiert. Dann macht er gar nichts. Keine Fehlermeldung, keine Exception, nichts.
Jemand eine Idee?
P.S.: Das er die Dateien öffnen darf, habe ich die jar-Datei signiert und in der policy unter "C:\Programme\Java\jre1.6.0_07\lib\security" folgendes eingetragen:
permission java.io.FilePermission "<<ALL FILES>>", "read, execute";
permission java.awt.AWTPermission "showWindowWithoutWarningBanner";
Nicht schön, aber selten.
In dem Sinne öffnen kannst du das nicht, weil es keine Datei ist sondern nur als solche vom Webserver ausgeliefert wird.
Du kannst die URL entweder im Browser öffnen (Desktop#browse), oder du holst dir den InputStream der URL, speicherst das als (evtl. temporäre) Datei und öffnest sie dann.
Wie meinst du "auf welchem Rechner ermittelst du die Dateien?". Ich generiere mit PHP eine "Linkliste". In dieser übergebe ich der Javascript, Java-Funktion einen Link. Dieser Link muss ein Hyperlink sein. Also http://bla/bla.bla ...
Das Java-Applet läuft doch auf dem Client ab, oder? Wo soll denn der header stehen? Diesen könnte ich bei einem HTTP-Download einbinden. Zumindest ist das die einzige Sache, die mir zu header spontan einfällt.