Heim > Java > javaLernprogramm > Hauptteil

Wie lade ich Dateien und zusätzliche Parameter mit Javas „URLConnection' hoch?

Barbara Streisand
Freigeben: 2024-10-25 02:18:02
Original
291 Leute haben es durchsucht

How to Upload Files and Additional Parameters with Java's `URLConnection`?

So laden Sie Dateien vom Java-Client auf einen HTTP-Server mit zusätzlichen Parametern hoch

Bei der Verwendung von HTTP-POST-Anfragen zum Hochladen von Dateien von einem Java-Client auf einen Server kommt es häufig vor Sie möchten den Dateien zusätzliche Parameter hinzufügen. Hier ist eine einfache und effiziente Lösung ohne die Notwendigkeit externer Bibliotheken:

Verwenden Sie java.net.URLConnection, um die HTTP-Anfrage einzurichten und sie für mehrteilige Formulardaten einzurichten, ein beliebtes Codierungsformat für die Verarbeitung sowohl binärer als auch Textdaten. Hier ist ein Beispiel, das zusätzliche Parameter param und die Dateien „textFile“ und „binaryFile“ enthält:

<code class="java">String url = "http://example.com/upload";
String charset = "UTF-8";
String param = "value";
File textFile = new File("/path/to/file.txt");
File binaryFile = new File("/path/to/file.bin");

URLConnection connection = new URL(url).openConnection();
connection.setDoOutput(true);
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary);

try (
    OutputStream output = connection.getOutputStream();
    PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, charset), true);
) {
    // Send param
    writer.append("--" + boundary).append(CRLF);
    writer.append("Content-Disposition: form-data; name=\"param\"").append(CRLF);
    writer.append("Content-Type: text/plain; charset=" + charset).append(CRLF);
    writer.append(CRLF).append(param).append(CRLF).flush();

    // Send text file
    writer.append("--" + boundary).append(CRLF);
    writer.append("Content-Disposition: form-data; name=\"textFile\"; filename=\"" + textFile.getName() + "\"").append(CRLF);
    writer.append("Content-Type: text/plain; charset=" + charset).append(CRLF);
    writer.append(CRLF).flush();
    Files.copy(textFile.toPath(), output);
    output.flush();
    writer.append(CRLF).flush();

    // Send binary file
    writer.append("--" + boundary).append(CRLF);
    writer.append("Content-Disposition: form-data; name=\"binaryFile\"; filename=\"" + binaryFile.getName() + "\"").append(CRLF);
    writer.append("Content-Type: " + URLConnection.guessContentTypeFromName(binaryFile.getName())).append(CRLF);
    writer.append("Content-Transfer-Encoding: binary").append(CRLF);
    writer.append(CRLF).flush();
    Files.copy(binaryFile.toPath(), output);
    output.flush();
    writer.append(CRLF).flush();

    // End boundary
    writer.append("--" + boundary + "--").append(CRLF).flush();
}</code>
Nach dem Login kopieren

Nachdem Sie die Anfrage eingerichtet haben, können Sie sie auslösen und den Antwortcode abrufen:

<code class="java">((HttpURLConnection) connection).getResponseCode();</code>
Nach dem Login kopieren

Weitere Informationen Für fortgeschrittene Szenarien oder zur Vereinfachung des Prozesses sollten Sie die Verwendung von Bibliotheken von Drittanbietern wie Apache Commons HttpComponents Client in Betracht ziehen.

Das obige ist der detaillierte Inhalt vonWie lade ich Dateien und zusätzliche Parameter mit Javas „URLConnection' hoch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage