Rumah > Java > javaTutorial > teks badan

Bagaimanakah saya boleh memuat naik fail dan parameter ke pelayan HTTP menggunakan Java tulen tanpa bergantung pada perpustakaan pihak ketiga?

Patricia Arquette
Lepaskan: 2024-10-25 04:11:29
asal
793 orang telah melayarinya

How can I upload files and parameters to an HTTP server using pure Java without relying on third-party libraries?

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

Nota Tambahan

  • Files.copy diperkenalkan dalam Java 7; gunakan FileUtils.copyFile untuk versi lama.
  • Apache Commons HttpComponents Client ialah perpustakaan pihak ketiga yang popular yang memudahkan proses ini.
  • Apache Commons FileUpload digunakan pada bahagian pelayan untuk memproses muat naik fail.

Lihat Juga

  • [Menggunakan java.net.URLConnection untuk melancarkan dan mengendalikan permintaan HTTP](pautan ke sumber)

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!

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!