Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Memuat Naik Fail dan Parameter Tambahan dengan `URLConnection` Java?

Barbara Streisand
Lepaskan: 2024-10-25 02:18:02
asal
210 orang telah melayarinya

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

Cara Memuat Naik Fail dari Pelanggan Java ke Pelayan HTTP dengan Parameter Tambahan

Apabila menggunakan permintaan HTTP POST untuk memuat naik fail daripada klien Java ke pelayan, ia adalah perkara biasa ingin memasukkan parameter tambahan bersama-sama dengan fail. Berikut ialah penyelesaian yang mudah dan cekap tanpa memerlukan perpustakaan luaran:

Gunakan java.net.URLConnection untuk mewujudkan permintaan HTTP dan menyediakannya untuk data borang berbilang bahagian, format pengekodan popular untuk mengendalikan kedua-dua binari dan data teks. Berikut ialah contoh yang termasuk param parameter tambahan dan fail textFile dan binaryFile:

<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>
Salin selepas log masuk

Selepas menyediakan permintaan, anda boleh menyalakannya dan mendapatkan semula kod respons:

<code class="java">((HttpURLConnection) connection).getResponseCode();</code>
Salin selepas log masuk

Untuk lebih lanjut senario lanjutan atau untuk memudahkan proses, pertimbangkan untuk menggunakan perpustakaan pihak ketiga seperti Apache Commons HttpComponents Client.

Atas ialah kandungan terperinci Bagaimana untuk Memuat Naik Fail dan Parameter Tambahan dengan `URLConnection` Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!