Rumah >Java >javaTutorial >Bagaimana untuk Memuat Naik Fail dan Parameter Tambahan dengan `URLConnection` Java?
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>
Selepas menyediakan permintaan, anda boleh menyalakannya dan mendapatkan semula kod respons:
<code class="java">((HttpURLConnection) connection).getResponseCode();</code>
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!