HTTP POST リクエストを使用して Java クライアントからサーバーにファイルをアップロードする場合、一般的にファイルと一緒に追加のパラメータを含めたい場合。外部ライブラリを必要としないシンプルで効率的なソリューションは次のとおりです。
java.net.URLConnection を利用して HTTP リクエストを確立し、マルチパート フォーム データ用に設定します。これは、バイナリとバイナリの両方を処理するための一般的なエンコード形式です。テキストデータ。追加のパラメータ param とファイル textFile および 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>
リクエストを設定した後、リクエストを起動して応答コードを取得できます:
<code class="java">((HttpURLConnection) connection).getResponseCode();</code>
詳細高度なシナリオを使用するか、プロセスを簡素化するには、Apache Commons HttpComponents Client などのサードパーティ ライブラリの使用を検討してください。
以上がJava の「URLConnection」を使用してファイルと追加パラメータをアップロードするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。