Eine Datei auf den Apache Server hochladen - über das Menü im JavaProgramm

M

Meri

Mitglied
Hallo Zusammen,
ich brauche eure Hilfe und zwar hab ich für einen Bekanten in Java ein Verwaltungsprogramm geschrieben, wo nun noch das Hochladen einer Datei fehlt. Ich habe es auch schon fast gelöst, allerdings klappt es bis jetzt nur mit dem Kopieren auf dem lokalen Rechner und ich möchte es aber auf einen Apache Server hochladen. Verbindung zu diesem Server besteht bereits, da ich die Datenbank von dort bereits in meinem Programm anspreche, aber das Hochladen der ausgewählten Datei auf den Server klappt noch nicht.

Ich habe schon verschiedenes gefunden, ob mit einem HttpServlet oder den fileUpload von Apache, aber beide wollen auch immer noch das ich die javax.servlet Libary verwende, aber diese schaffe ich nicht einzubinden.
Habt ihr eine idee wie ich die Verwenden kann, wie z.b. hier beschrieben ist: Upload File to Server Using Servlet Example - The Java Programmer
Oder wie ich es sonst machen kann, denn ich möchte eigentlich über ein Menü oder Button in meinem Javaprogramm die Datei auf meinem PC auswählen und dann dort auf dem Server speichern, damit ich später über eine HTML-Seite diese Datei (pdf oder Bild) anzeigen kann.

Ich wäre euch sehr dankbar, wenn ich mir Tips oder Ideen habt.

Grüße
Meri
 
mihe7

mihe7

Top Contributor
Wenn ich Dein Anliegen richtig verstehe, bist Du in der ganz falschen Baustelle: Dir geht es darum, einen Upload durchzuführen und nicht darum, serverseitig den Upload zu behandeln.

Wenn Du einen Apache laufen hast, wäre die Frage, wie Dateiuploads aktuell serverseitig gehandhabt werden.
 
M

Meri

Mitglied
Ja genau ich möchte die Datei von dem Javaprogram aus auf den Apache Server hochladen, aber das habe ich festgestllt geht nicht so wirklich. Oder gibt es doch eine Möglichkeit?

Außer aus dem JavaProgramm raus über einen Link in einem Browser eine html seite aufzurufen, welche den Upload über ein Formular auf eine weitere PHP-Seite dann auf dem Apache lädt?
 
mihe7

mihe7

Top Contributor
Du brauchst serverseitig etwas, das die Datei entgegennimmt, das kann z. B. ein PHP-Skript sein. Auf Java-Seite reicht dann ein POST-Request.
 
M

Meri

Mitglied
Ok und wie spreche ich das aus Java an? Geht das über einen Button in dem Programm?
Und wie wird das dann entgegen genommen, bzw. bekommt das der User mit oder läuft das php-script ganz im Hintergrund ab?
 
mihe7

mihe7

Top Contributor
Ich kann Dir später ein Beispiel zusammenbauen (mit PHP auf dem Server und Java auf dem Client).

Im Prnzip läuft das so, dass der Request beim Apache aufschlägt, der dann dafür sorgt, dass das PHP-Skript ausgeführt wird. Die Antwort des PHP-Skripts wird wiederum an den Client übertragen (ein Request-Response-Zyklus). Was der Benutzer davon mitbekommt, hängt vom Client ab. In Java kannst Du das gestalten, wie Du willst. Natürlich kannst Du den Upload auch starten wie Du willst, z. B. auf Knopfdruck oder per Drag & Drop.
 
mihe7

mihe7

Top Contributor
Quick & Dirty:
PHP:
<?php
$uploaddir = '/pfad/zum/uploadverzeichnis';
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);

set_error_handler(function() { http_response_code(400); });
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    http_response_code(201);
}
?>
Hier musst Du $uploaddir anpassen.

Java-Client:
Java:
import java.nio.file.Files;
import java.nio.charset.StandardCharsets;
import java.io.*;
import java.net.*;
import java.util.StringJoiner;

public class Upload {
    private static final String CRLF = "\r\n";
    
    protected Upload() {}

    public static int formUpload(File file, String formField, String url) throws IOException {
        String boundary = Long.toHexString(System.currentTimeMillis());

        URLConnection conn = new URL(url).openConnection();
        conn.setDoOutput(true);
        conn.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);
        try (OutputStream os = conn.getOutputStream()) {
            StringJoiner j = new StringJoiner(CRLF);
            j = new StringJoiner(CRLF);
            j.add("--" + boundary);
            j.add("Content-Disposition: form-data; name=\"" + formField + "\"; filename=\"" + 
                    file.getName() + "\"");
            j.add("Content-Type: application/octet-stream");
            j.add("Content-Transfer-Encoding: binary");
            j.add(CRLF);

            writeFlush(os, j.toString());
            Files.copy(file.toPath(), os);
            writeFlush(os, CRLF);
            writeFlush(os, "--" + boundary + "--" + CRLF);
        }

        return ((HttpURLConnection) conn).getResponseCode();
    }

    private static void writeFlush(OutputStream os, String value) throws IOException {
        os.write(value.getBytes(StandardCharsets.UTF_8));
        os.flush();
    }

    public static void main(String[] args) {
        if (args.length != 3) {
            System.out.println("Parameter: FILE FIELD URL");
            System.out.println("Sendet FILE als FIELD eines Formulars an URL");
            System.exit(1);
        }

        try {
            int response = formUpload(new File(args[0]), args[1], args[2]);
            System.out.printf("Ergebnis: %d\n", response);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
}
Die Klasse kannst Du so verwenden. Die main-Methode ist nur zu Demozwecken, im Endeffekt musst Du lediglich wie in Zeile 50 die Methode formUpload aufrufen. Die Parameter sollten klar sein, der zweite muss "userfile" lauten (s. PHP-Skript).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
VPChief Gibt es eine möglichkeit Dateien aus der jar datei zu kopieren? AWT, Swing, JavaFX & SWT 46
J Swing JavaProgramm für Verschlüssen für eine Datei AWT, Swing, JavaFX & SWT 19
M Wie binde ich eine JavaFX ProgressBar an eine Datei Übertragung? AWT, Swing, JavaFX & SWT 2
D Objekte einer Oberfläche in eine Datei/Ordner speichern AWT, Swing, JavaFX & SWT 9
T Aus JAVA.Jar GUI eine Flash-Datei machen AWT, Swing, JavaFX & SWT 3
W Funktion aus einer Java Datei in eine andere einbauen AWT, Swing, JavaFX & SWT 25
B Datei Browser integriert in eine GUI AWT, Swing, JavaFX & SWT 5
R JPanel als Screenshot in eine Datei schreiben AWT, Swing, JavaFX & SWT 3
Monokuma 2D-Grafik Imageimport durch eine gezeichnete Form ersetzen AWT, Swing, JavaFX & SWT 16
B JavaFX Warum wird hier eine NullPointer-Exception geworfen? AWT, Swing, JavaFX & SWT 7
B Swing Sudoku: Laden / Speichern von Zahlen aus/in mehrere JTextFields aus/in eine(r) Textdatei AWT, Swing, JavaFX & SWT 9
P Swing Icon einfügen wirft eine Fehlermeldung AWT, Swing, JavaFX & SWT 3
F Variablen an eine Form binden? AWT, Swing, JavaFX & SWT 2
V Swing für jedes Kästchen eine eigene Farbe AWT, Swing, JavaFX & SWT 2
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 1
W JavaFX Warum kriege ich eine Exception? AWT, Swing, JavaFX & SWT 23
karlmasutra JavaFX Zugriff auf eine erzeugte Scene aus einer anderen Klasse AWT, Swing, JavaFX & SWT 1
Informatiknoob AWT Zahlenraten (eine Zahl zwischen 1 und 10) AWT, Swing, JavaFX & SWT 1
A eine Fehler AWT, Swing, JavaFX & SWT 9
RawBit Auf eine Zeichnung im Canvas reagieren AWT, Swing, JavaFX & SWT 13
A JavaFX Daten in eine HTML-Table mit JS schreiben AWT, Swing, JavaFX & SWT 3
B JavaFX TableView eine Zeile markieren AWT, Swing, JavaFX & SWT 5
J jButton soll nach klicken eine Variable um 1 erhöhen AWT, Swing, JavaFX & SWT 2
J Compiler in der JavaFX stop() Methode warten lassen bist eine Aktion in einer anderen Scene gemacht AWT, Swing, JavaFX & SWT 5
xYurisha JLabel Text einer geöffneten Gui über eine andere Klasse ändern! AWT, Swing, JavaFX & SWT 3
J JavaFX Die Webview stellt eine Webseite nicht dar AWT, Swing, JavaFX & SWT 0
M JavaFX Ein Labeltext eine zeitlang anzeigen dann weiter machen AWT, Swing, JavaFX & SWT 3
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
Joker4632 JFrame in eine Runnable auslagern? AWT, Swing, JavaFX & SWT 4
A JScrollPane soll JPanel mit JButtons enthalten und eine Scollbar anzeigen AWT, Swing, JavaFX & SWT 1
B Wie erstelle ich eine JavaFX Anwendung von diesem Code? AWT, Swing, JavaFX & SWT 3
Sanni94 JavaFX Kann man eine Grafik in einen Text einbinden? AWT, Swing, JavaFX & SWT 2
Java_RY AWT Frame in eine eigene klasse auslagern und aufrufen AWT, Swing, JavaFX & SWT 6
I 2D-Grafik Problem beim Ändern der Farbe eine 2d Objekts AWT, Swing, JavaFX & SWT 3
G Eine paint-Methode, 2 Welten? AWT, Swing, JavaFX & SWT 3
Thallius Swing JDatePicker oder Sucht jemand eine Aufgabe? AWT, Swing, JavaFX & SWT 0
K Wie kann ich eine Variable zwischen Tab Klassen weitergeben ? AWT, Swing, JavaFX & SWT 7
D JavaFX Erkennen wenn eine Anwendung geschlossen wird und etwas tun? AWT, Swing, JavaFX & SWT 4
R Swing Durch JComboBox-Item eine TextArea aktualisieren AWT, Swing, JavaFX & SWT 2
A Mit dem Scene Builder eine Collage erstellen (Bilder beziehen aus Flickr) AWT, Swing, JavaFX & SWT 1
A JFace Wizard: Ist es möglich eine Page zu löschen? AWT, Swing, JavaFX & SWT 2
L Swing Wie programmiere ich eine eigene GUI? AWT, Swing, JavaFX & SWT 12
M Combo Box auswahl in eine Datenbank speichern AWT, Swing, JavaFX & SWT 1
M Swing JTextField getText Mehtode übergeben in eine Klasse zu einer Rechnung AWT, Swing, JavaFX & SWT 1
D AWT Das ganze GUI in eine Klasse? AWT, Swing, JavaFX & SWT 1
J JavaFX eine Art Tabelle, jedoch mit mehreren Zeilen AWT, Swing, JavaFX & SWT 2
X 3D-Grafik Wie kann ich eine Karte erstellen wie zb:(Bei Minecraft) AWT, Swing, JavaFX & SWT 1
L Zwei String Array in eine Spalte einfügen AWT, Swing, JavaFX & SWT 1
U LookAndFeel für eine Komponente AWT, Swing, JavaFX & SWT 2
E Mit Netbeans von einer Form auf eine Komponente einer anderen Form zugreifen AWT, Swing, JavaFX & SWT 2
G Zeichnen auf eine schwergewichtige Komponente? AWT, Swing, JavaFX & SWT 0
S Swing Update eine JTabelle nach einer Drag&Drop Operation AWT, Swing, JavaFX & SWT 0
M Über eine JMenuBar überprüfen ob ein JCheckBoxMenuItem selectiert ist. AWT, Swing, JavaFX & SWT 4
M Wie kann ich eine an Apple Automator angelehnte GUI erstellen? AWT, Swing, JavaFX & SWT 1
A JavaFX Eine Task mit einer ProgressBar verbinden AWT, Swing, JavaFX & SWT 0
S JavaFX Canvas - nur eine Figur auf der Zeichenfläche färben? AWT, Swing, JavaFX & SWT 1
S Swing Mit einem Link eine Methode aufrufen AWT, Swing, JavaFX & SWT 2
C Swing Durch Inhaltsänderung eines JTextfields eine Funktion aufrufen AWT, Swing, JavaFX & SWT 5
G 2D-Slider bzw. eine graphische Auswahlkomponente die sich so verhält AWT, Swing, JavaFX & SWT 6
H Lust auf eine Open-Source Lösung für universelle Java Client-Technologie? AWT, Swing, JavaFX & SWT 11
S 5 Playlisten eine Skip() AWT, Swing, JavaFX & SWT 4
M SWT Browser nur eine Seite erlauben AWT, Swing, JavaFX & SWT 3
B Daten in eine JTable schreiben AWT, Swing, JavaFX & SWT 3
K GUI Elemente über eine separate Textdatei beschriften? AWT, Swing, JavaFX & SWT 4
G noch eine Frage zum EventDispachThread AWT, Swing, JavaFX & SWT 4
I Anhand ButtonGroup eine Auswahl treffen AWT, Swing, JavaFX & SWT 2
B Nach dem Öffnen des Dialogs eine Aktion ausführen. AWT, Swing, JavaFX & SWT 6
A Swing Text auf eine Seite an beliebigen Orten schreiben AWT, Swing, JavaFX & SWT 6
G Swing Value von einer JScrollBar auf eine andere übertragen AWT, Swing, JavaFX & SWT 2
Rudolf Swing Wie testet man am besten eine GUI? AWT, Swing, JavaFX & SWT 3
P Swing Alle Zeilen einer Spalte (jTable) zusammen zählen und in eine eigene Zeile das Ergebnis schreiben. AWT, Swing, JavaFX & SWT 7
F GroupableTableHeader zeigt nur eine Zeile AWT, Swing, JavaFX & SWT 4
N Swing Optimale Höhe eine JTextPanes bei festgelegter Breite bestimmen AWT, Swing, JavaFX & SWT 23
R Swing Mit Swing eine throws Exception Methode öffnen AWT, Swing, JavaFX & SWT 3
M Eine Kugel nach rechts bewegen AWT, Swing, JavaFX & SWT 5
C Swing NullPointerException beim Hinzufügen von Checkboxes in eine ArrayList AWT, Swing, JavaFX & SWT 5
GUI-Programmer LayoutManager Kurze Layout Frage - eine komponente mittig? AWT, Swing, JavaFX & SWT 5
lumo SWT Zeichnen bescheunigen bzw eine allg. Frage AWT, Swing, JavaFX & SWT 8
M Auf einem Bild eine Markierung aufziehen AWT, Swing, JavaFX & SWT 3
R Eine Instanz von JPanel mehrfach hinzufügen AWT, Swing, JavaFX & SWT 2
B eine .jar erzeugen AWT, Swing, JavaFX & SWT 4
M In JField eine Kommazahl darstellen java.lang.NumberFormatException AWT, Swing, JavaFX & SWT 4
N Button on click eine andere Klasse aufrufen... AWT, Swing, JavaFX & SWT 2
M Eine nicht korrekte Darstellung bei repaint() warum? AWT, Swing, JavaFX & SWT 4
M Ein Tab eine JTabbedPane durch Button Druck öffen AWT, Swing, JavaFX & SWT 2
B Swing JButtons in eine Arraylist<JButton> einfügen AWT, Swing, JavaFX & SWT 2
aze GeneralPath wie eine Parabel: Scheitelpunkt bestimmen AWT, Swing, JavaFX & SWT 9
M Swing Eine andere Klasse über Button starten und in TextArea ausgeben AWT, Swing, JavaFX & SWT 13
Meldanor Swing JTable - Eine neue Zeile vor einer bestehenden Einfügen AWT, Swing, JavaFX & SWT 2
R jFreeChart in eine NetBeans Projekt integrieren AWT, Swing, JavaFX & SWT 24
JuliaOne Komponenten innerhalb eine JScrollpane werden auch ausserhalb davon gezeichnet! AWT, Swing, JavaFX & SWT 7
P Swing Auswahl einer JComboBox für eine andere JComboBox übernehmen AWT, Swing, JavaFX & SWT 4
J Zelle eine JTable ändern AWT, Swing, JavaFX & SWT 3
B Swing JScrollPane - observen wann eine JScrollBar angezeigt wird? AWT, Swing, JavaFX & SWT 5
J Lazy Loading eine JTree während Scrollen AWT, Swing, JavaFX & SWT 11
P Swing Wie bekomme ich eine Referenz auf ein Objekt das im EDT erzeugt wird? Und anderes... AWT, Swing, JavaFX & SWT 8
D Zwei String Attribute über eine Methode als Zeilen in einer Tabelle darstellen AWT, Swing, JavaFX & SWT 9
S Wie kann man eine XSLT-Parser schreiben? AWT, Swing, JavaFX & SWT 2
F Im BorderLayout eine feste Grösse zuweisen! AWT, Swing, JavaFX & SWT 9

Ähnliche Java Themen

Anzeige


Oben