Muat Naik Fail Pelayan HTTP Menggunakan Java
Pengenalan
Artikel ini membincangkan memuat naik fail ke Pelayan HTTP daripada klien Java. Kami berhasrat untuk menyediakan penyelesaian yang ringkas dan percuma yang menggabungkan parameter dan fail dalam permintaan POST.
Pengekodan Berbilang Bahagian/Borang-Data
Untuk kandungan POST campuran (perduaan dan data aksara), pengekodan berbilang bahagian/data bentuk biasanya digunakan. Data dibahagikan kepada bahagian, masing-masing dengan pengepala dan kandungannya sendiri.
Java Solution
Kod berikut menunjukkan cara memuat naik fail dan parameter menggunakan sambungan HTTP langsung tanpa perpustakaan pihak ketiga:
<code class="java">// Parameters String url = "http://example.com/upload"; String param = "value"; // File paths File textFile = new File("/path/to/file.txt"); File binaryFile = new File("/path/to/file.bin"); // Generate unique boundary value String boundary = Long.toHexString(System.currentTimeMillis()); // Create connection URLConnection connection = new URL(url).openConnection(); connection.setDoOutput(true); connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); // OutputStream for writing data try (OutputStream output = connection.getOutputStream(); PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, charset), true)) { // Write parameter 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(); // Write 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); // Ensure file is saved using this charset writer.append(CRLF).flush(); Files.copy(textFile.toPath(), output); output.flush(); writer.append(CRLF).flush(); // Write 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 multipart/form-data writer.append("--" + boundary + "--").append(CRLF).flush(); } // Get HTTP response code int responseCode = ((HttpURLConnection) connection).getResponseCode(); System.out.println(responseCode);</code>
Nota Tambahan
Lihat Juga
Atas ialah kandungan terperinci Bagaimanakah saya boleh memuat naik fail dan parameter ke pelayan HTTP menggunakan Java tulen tanpa bergantung pada perpustakaan pihak ketiga?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!